public class Test1 { private int t1 = 1; public int getT1() { return t1; } public void setT1(int t1) { this.t1 = t1; } }
以上是Test1类,有个private的t1,值为1,给了get/set方法。
public class Test2 extends Test1 { private int t1 = 2; public static void main(String[] args) { Test1 test1 = new Test1(); Test2 test2 = new Test2(); System.out.println(test1.getT1()); System.out.println(test2.getT1()); } }
以上,Test2继承了Test1,也给了一个t1属性,但值为2。
输出结果为:
1
1
public class Test2 extends Test1 { private int t1 = 2; public int getT1() { return t1; } public void setT1(int t1) { this.t1 = t1; } public static void main(String[] args) { Test1 test1 = new Test1(); Test2 test2 = new Test2(); System.out.println(test1.getT1()); System.out.println(test2.getT1()); } }
Test2继承了Test1,也给了一个t1属性,但值为2,提供了get/set方法。
输出结果:
1
2
结论:子类没有继承父类的private字段,只是通过父类暴露的public的getT1()方法来访问到的父类的private字段,值为1,一旦子类重写了getT1()方法,则得到的值就改变了,值为2。
时间: 2024-10-06 00:18:55