java子类和父类属性重复问题
伊谢尔伦
伊谢尔伦 2017-04-18 09:03:21
0
8
947

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,继承的方法是子类会覆盖掉父类相同的方法,但是这属性为什么没覆盖

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

모든 응답(8)
巴扎黑

상위 클래스의 속성은 비공개이며 하위 클래스도 상위 클래스의 메서드를 재정의할 때 상위 클래스의 메서드를 호출하지 않으므로 상위 클래스의 속성 값이 비어 있습니다. .

伊谢尔伦

모두 비공개입니다!

巴扎黑

같은 멤버 변수는 덮어쓰지 않습니다. http://blog.csdn.net/iwaich/article/details/9126661

黄舟

변수는 재정의되지 않습니다

PHPzhong

으아악

小葫芦

setter 메소드 본문을 게시하는 것이 좋습니다. super 키워드를 사용하는 경우 이 문제를 논의하는 것이 좋습니다

左手右手慢动作

Student에서 a() 메서드를 프로그래밍하고 super를 사용하여 Person 클래스에서 메서드를 호출한 다음 기본 메서드에서 a() 메서드를 호출할 수 있습니다

大家讲道理

이 문제는 해결되었습니다.

제목 설명에 몇 가지 부정확한 내용이 있음을 지적합니다.

부모 클래스(Person)의 name 속성 값이 null입니다. 상속 방법은 하위 클래스가 부모 클래스의 동일한 메서드를 재정의하는 것인데 이 속성은 왜 재정의되지 않습니까?

실제로 제가 이해한 바에 따르면 "상위 클래스의 동일한 이름의 속성에 대한 하위 클래스 속성의 영향"과 "상위 클래스의 동일한 이름의 메소드에 대한 하위 클래스 메소드의 효과"는 같은.

실제로 소위 하위 클래스는 동일한 이름을 가진 상위 클래스의 메서드를 "재정의"하며 실제로는 이를 다루지 않으며 상위 클래스 메서드는 여전히 존재합니다. 디버그 기반에서는 볼 수 없다는 것뿐입니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿