栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Scala技术点——多态性质的动态绑定问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Scala技术点——多态性质的动态绑定问题

1. 知识点:
  • scala是单继承语言
  • scala的多态性实现方式与Java中基本相同(基于引用类型与实际对象类型的差异性实现多态性)
  • Java的动态绑定只是方法的动态绑定
  • Scala的动态绑定不仅包括方法还包括属性的动态绑定
2. 代码实验:

Java实现:

class Person {
    public String name = "Person";
    public void show() {
    	system.out.println("I am a Person")
    }
}

class Teacher extends Person {
	public String name = "Teacher";
	@Override
	public void show() {
		system.out.println("I am a Teacher");
	}
}

public class Test {
	public static void main(String[] args) {
		Teacher t0 = new Teacher();
		Person t1 = new Teacher();
		sout(t0.name); // Teacher
		t0.show(); // I am a Teacher
		sout(t1.name); // Person  // 属性并没有动态绑定
		t1.show(); // I am a Teacher
	}
}

Scala实现:

class Person {
	val name: String = "Person"
	def show() : Unit = {
		println("I am a Person")
	}
}

class Teacher extends Person {
	override val name: String = "Teacher"
	override def show(): Unit = {
		println("I am a Teacher")
	}
}

object Test {
	def main(args: Array[String]): Unit = {
		val Teacher t0 = new Teacher()
		println(t0.name)  // Teacher
		t0.show();  // I am a Teacher

		val Person t1 = new Teacher()
		println(t1.name) // Teacher  // 实现了属性的动态绑定
		t1.show(); // I am  a Teacher
	}
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/532181.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号