찾다

 >  Q&A  >  본문

java子类和父类属性重复问题

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

伊谢尔伦伊谢尔伦2769일 전950

모든 응답(8)나는 대답할 것이다

  • 巴扎黑

    巴扎黑2017-04-18 09:05:21

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

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:05:21

    모두 비공개입니다!

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:05:21

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

    회신하다
    0
  • 黄舟

    黄舟2017-04-18 09:05:21

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

    회신하다
    0
  • PHPz

    PHPz2017-04-18 09:05:21

    으아악

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-18 09:05:21

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

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-18 09:05:21

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

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-04-18 09:05:21

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

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

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

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

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

    회신하다
    0
  • 취소회신하다