之前看到了 这么一段代码 子类中 出现了 和父类 成员同名的 成员变量后的取值问题
代码如下
class SuperClass {
private int number;
public SuperClass() {
this.number = 0;
}
public SuperClass(int number) {
this.number = number;
}
public int getNumber() {
number++;
return number;
}
}
class SubClass1 extends SuperClass {
public SubClass1(int number) {
super(number);
}
}
class SubClass2 extends SuperClass {
public SubClass2(int number) {
super(number);
}
}
package learn01;
public class SubClass extends SuperClass {private int number;
public SubClass(int number) {
super(number);
}
public int getNumber() {
number++;
return number;
}
public static void main(String[] args) {
SuperClass s = new SubClass(20);
SuperClass s1 = new SubClass1(20);
SuperClass s2 = new SubClass2(20);
System.out.println(s.getNumber());
System.out.println(s1.getNumber());
System.out.println(s2.getNumber());
}
}
输出的 结果 :
1
3
3
开始 也觉得奇怪了 断点调试 再看看
出现了 两个 number 而 s1.getNumber() 只有一个
调试进去 发现 number=20 传递给了父类,
子类还是为0的
SubClass 类里 重写 SubClass(int number)
调用了 父类构造 值传递到父类
父类使用了 父类的 成员变量
子类使用 子类的 成员变量