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,继承的方法是子类会覆盖掉父类相同的方法,但是这属性为什么没覆盖
巴扎黑2017-04-18 09:05:21
상위 클래스의 속성은 비공개이며 하위 클래스도 상위 클래스의 메서드를 재정의할 때 상위 클래스의 메서드를 호출하지 않으므로 상위 클래스의 속성 값이 비어 있습니다. .
ringa_lee2017-04-18 09:05:21
Student에서 a() 메서드를 프로그래밍하고 super를 사용하여 Person 클래스에서 메서드를 호출한 다음 기본 메서드에서 a() 메서드를 호출할 수 있습니다
大家讲道理2017-04-18 09:05:21
이 문제는 해결되었습니다.
제목 설명에 몇 가지 부정확한 내용이 있음을 지적합니다.
부모 클래스(Person)의 name 속성 값이 null입니다. 상속 방법은 하위 클래스가 부모 클래스의 동일한 메서드를 재정의하는 것인데 이 속성은 왜 재정의되지 않습니까?
실제로 제가 이해한 바에 따르면 "상위 클래스의 동일한 이름의 속성에 대한 하위 클래스 속성의 영향"과 "상위 클래스의 동일한 이름의 메소드에 대한 하위 클래스 메소드의 효과"는 같은.
실제로 소위 하위 클래스는 동일한 이름을 가진 상위 클래스의 메서드를 "재정의"하며 실제로는 이를 다루지 않으며 상위 클래스 메서드는 여전히 존재합니다. 디버그 기반에서는 볼 수 없다는 것뿐입니다.