java 子类继承 父类, 但子类中 包含和父类相同 属性 ,给子类赋值之后,父类的相同的属性值还是空的。
类定义如下:
public class Person {
private String name;
private String age;
// ignore getter and setter
}
public class Student extends Person {
private String name;
private String score;
// ignore getter and setter
}
public static void main(String[] args){
Student stu = new Student();
stu.setAge("12");
stu.setName("test");
}
debug看到
父类(Person)的name属性值是null,继承的方法是子类会覆盖掉父类相同的方法,但是这属性为什么没覆盖
父類別的屬性被私有了,子類別也重寫了父類別的方法,重寫方法的時候也沒去呼叫父類別的方法,所以造成了父類別屬性值為空。
都是private的啊!
相同成員變數不會覆蓋,http://blog.csdn.net/iwaich/article/details/9126661
變數沒有重寫這一說
雷雷
建議貼出setter方法體 如果使用了 super關鍵字 再討論這個問題比較好
可以在Student裡編一個方法a(),在方法裡用super呼叫Person類別裡方法,然後再在main方法裡呼叫該a()方法,應該可行
這個問題已經解決了。
我只是指出題主在題目描述中的一點不準確的地方:
其實,根據我的理解:「子類別屬性對父類別同名屬性的作用」與「子類別方法對父類別同名方法的作用」是相同的。
其實,所謂子類別」覆蓋了「父類別同名方法,其實並沒有真地覆蓋,父類別方法還在那裡。只不過你在debug根據裡看不到而已。