1.当调用对象方法的时,该方法会和该对象的内存地址/运行地址绑定
2.当调用对象属性时,没有动态绑定机制,哪里声明哪里使用
public class OuterClass {
public static void main(String args[]) {
A a = new B(); //父类引用指向子类对象
System.out.println(a.sum()); //30+10-》40
}
}
class A {
int i = 20;
public int getI(){
return i;
}
public int sum(){
return getI()+10; //30+10
}
}
class B extends A {
int i = 30;
public int getI(){
return i;
}
}
也就是说,调用方法,都是从运行类型开始找,所以这里的getI()方法是调用子类的,至于i这个值,看最近的就行了。