java 的动态绑定机制(非常重要!)
class AA{ //父类
public int i=10;
//子类若没有sum(), 继承机制起作用,用父类的sum(), 而getI()则会跟运行类型绑定
public int sum(){
return getI()+10;
}
//子类若没有sum1(), 则用父类的sum1(), 属性没有动态绑定机制,哪里声明,哪里使用
public int sum1(){
return i+10;
}
public int getI(){
return i;
}
}
class BB extends AA{ //子类
public int i=20;
// public int sum(){
// return i+20;
// }
// public int sum1(){
// return i+10;
// }
public int getI(){
return i;
}
}
`
main方法中
AA aa = new BB(); //向上转型
System.out.println(aa.sum()); //注销子类的sum()方法前 40 -> 注销后 30
System.out.println(aa.sum1()); // 注销子类的sum1()方法前 30 -> 注销后 20