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); } }