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
}
}