java的动态绑定机制(java的重要特性)
1.当调用对象方法的时候,该方法回合该对象的内存地址/运行类型绑定
2.当调用对象属性时,属性是没有动态绑定机制,在哪里声明就在哪里使用
public class DynamicBinding01 {//动态绑定
public static void main(String[] args) {
A a =new B();//编译类型 A 运行类型 B
System.out.println(a.sum());//向上转型 40 注释掉B类中sum()方法后结果为30
System.out.println(a.sum1());//30 注释掉B类中sum1()方法后结果为20
}
}
//父类
class A{
public int i =10;
public int sum(){
return get1()+10;//20+10
}
public int sum1(){
return i+10;//10+10
}
public int get1(){
return i;
}
}
//子类
class B extends A{
public int i =20;
public int sum(){
return i+20;
}
public int get1(){
return i;//20
}
public int sum1(){
return i+10;
}
}