首先由一下三段代码,请给出打印结果:
测试类:
1 public class Test { 2 public static void main(String[] args) { 3 Base p = new Sub("SubClass"); 4 p.printA(); 5 } 6 }
代码1:
1 class Base { 2 public String str = "Base class"; 3 4 public void printA() { 5 System.out.println(str); 6 } 7 } 8 9 class Sub extends Base{ 10 public Sub(String str) { 11 this.str = str; 12 } 13 }
代码2
1 class Base { 2 public String str = "Base class"; 3 4 public void printA() { 5 System.out.println(str); 6 } 7 } 8 9 class Sub extends Base{ 10 public String str = "Base class"; 11 12 public Sub(String str) { 13 this.str = str; 14 } 15 }
代码3:
1 class Base { 2 public String str = "Base class"; 3 4 public void printA() { 5 System.out.println(str); 6 } 7 } 8 9 class Sub extends Base{ 10 public String str = "Base class"; 11 12 public Sub(String str) { 13 this.str = str; 14 } 15 16 @Override 17 public void printA() { 18 System.out.println(str); 19 } 20 }
结果依次是:
代码1:SubClass
代码2:BaseClass
代码3:SubClass
分析:
原文:http://www.cnblogs.com/zhangshiwen/p/4844821.html