class Person {
public String name;
String id;
public Person() {
System.out.println("Parent default");
name = id = "";
}
public Person(String name, String id) {
System.out.println("Parent parameter");
this.name = name;
this.id = id;
}
void show() {
System.out.println(this.name + "\n" + this.id);
}
}
class Student extends Person {
Student() {}
Student(String a, String b) {
super(a, b);
}
}
class Main {
public static void main(String args[]) {
Person p = new Person("A", "AA");
Student s = new Student("b", "BB");
s.show();
}
}
저는 자바를 처음 접했기 때문에 몇 가지 기본적인 사항을 이해하고 싶었지만 실패했습니다. 부모 클래스에서 상속하면 자식 클래스에서 부모 클래스의 복사본을 얻습니다. 내가 부모 클래스 참조 따라서이의 경우 코드 ' show
(메인 클래스에서) 방법을, 이것은 부모 클래스 표시하도록되어' name
와 id
이전에 설정되었다.
그러나 그것은 보이지 않습니다. 그래서 제 이해에 확실히 문제가 있습니다. 하위 클래스에서 상위 클래스의 사본에 액세스하려면 어떻게해야합니까? super
자식 생성자 의 메서드를 사용 합니까? 간단히 말해 상속의 기본을 알고 싶습니다.
다음 진술을 고려하십시오.
Person p = new Person("A", "AA");
이것은 Person
. 이름은 "A"
이고 ID는 "AA"
입니다.
이제 다음 진술을 고려하십시오.
Student s = new Student("b", "BB");
이것은 새로운 Student
. 또한 새로운 Person
. 어떻게 가능합니까? 그럼 a는 Student
이다Person
. 그것이 상속이 의미하는 바입니다. 유형이 다른 유형을 확장 할 때 이는 유형 간의 "is a" 관계를 정의하는 것입니다 .
개는 동물이기 때문에 개는 동물을 확장합니다. Car는 Vehicle이기 때문에 Car는 Vehicle을 확장합니다.
그래서 당신은 새로운 만들 때 Student
, 당신은을 만드는 Person
. Student extends Person
, 그래서 a Student
는 Person
. 당연히 추가 할 수 있습니다.
super
키워드는 자식 클래스에서 부모 클래스의 메소드와 필드를 참조하는 데 사용됩니다. 당신에 Student
생성자
Student(String a, String b) {
super(a, b);
}
실제로를 호출하여 Person
생성자를 간접적으로 호출하고 super(a, b)
있습니다. 그래서 이름 과 ID를 new Student("b", "BB")
생성합니다 . 즉 A가 될 일이 아니라.Person
"b"
"BB"
Person
Student
사람 "a"
과 사람 사이에는 실제적인 관계가 없습니다 "b"
(아마도 먼 사촌 일 수도 있지만). 당신 "a"
이 그녀의 이름 을 물어 보면 그녀는 대답 할 것 "a"
입니다. 사람 "b"
에게 그의 이름 을 물어 보면 그는 대답 할 것 "b"
입니다. 한 사람이 다른 사람의 이름으로 답장하는 것은 조금 이상 할 것이므로 개인은 완전히 다른 사람으로 취급됩니다.
참조 : Java 상속 문서
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다