java 动态绑定机制
public class count01 {
public static void main(String[] args) {
A b = new B();
System.out.println(b.counts()); //40
//b中没有count方法所以向a中去找 但a中count方法调用了geti方法
//根据动态绑定机制 回到b中找geti public int geti(){ return i+10;} 中的i指的是b的i属性20 所以30+10=40 条件2
//这就是调用对象方法时,该方会和对象的内存地址(运行类型)绑定
System.out.println(b.geti()); //30
//i+10 直接就是本类的 i=20 + 10 =30 这是条件2
}
}
class A{//父类
int i = 10;
public int counts(){
return geti() + 10;
}
public int geti(){
return i+10;
}
}
class B extends A{//子类
int i = 20;
public int geti(){
return i+10;
}
}