Las propiedades polimórficas de Java están vinculadas estáticamente (vinculación del compilador) y los métodos están vinculados dinámicamente (vinculación en tiempo de ejecución). En tiempo de ejecución, la propiedad genera el valor de la clase principal y el método ejecuta el método de la subclase. Es decir, mire a la izquierda para compilar y mire a la derecha para ejecutar .
El polimorfismo de Java no puede acceder a propiedades y métodos específicos de subclases.
Scala
Las propiedades y métodos polimórficos de Scala están vinculados dinámicamente. En tiempo de ejecución, las propiedades y los métodos se subclasifican.
El polimorfismo de Java tampoco puede acceder a las propiedades y métodos únicos de la subclase.
Código Java
publicclassJava02_Dynamic{
publicstaticvoidmain(String[] args){
Person02 t =newTeacher02();// Java中属性是静态绑定(编译期绑定)
System.out.println(t.name);// person// 不能访问子类特有的方法和属性// t.addr//t.sleep();// java中方法是动态绑定(运行期绑定)
t.hello();// Teacher hello}}classPerson02{
String name ="person";int age =18;publicvoidhello(){
System.out.println("Person hello");}}classTeacher02extendsPerson02{
String name ="student";
String addr ="China";@Overridepublicvoidhello(){
System.out.println("Teacher hello");}publicvoidsleep(){
System.out.println("techer sleep");}}