public class polyExercise {
public static void main(String[] args) {
Sub sub = new Sub();
// 属性没有重写,具体的结果要看编译类型
System.out.println(sub.n); //访问属性,直接看编译类型,编译类型是sub,输出20
sub.out(); // 调用方法,按照运行类型的查找规则,先查找Sub,输出20
Base base = sub;
System.out.println(base == sub); // 指向同一个地址,输出 true
System.out.println(base.n); // 访问属性,编译类型是Base,输出 10
base.out(); // 调用方法,运行类型为Sub,输出20
}
}
class Base{
int n = 10;
public void out(){
System.out.println(this.n);
}
}
class Sub extends Base{
int n = 20;
public void out(){
System.out.println(this.n);
}
}