innn

상속관계 본문

JAVA/자바의 정석 기초편_남궁성(2020)

상속관계

33삼 2022. 7. 6. 00:15

상속

- 기존의 클래스를 이용해서 새로운 클래스를 작성하는 것 (코드의 재사용)

- 두 클래스를 부모와 자식으로 관계를 맺어주는 것.

 

class 자식 클래스 extends 부모클래스 {

}

 

class Parent {}

class Child extends Parent {

 

Child 클래스와 Parent 클래스는 상속 관계에 있다고 한다.

 

자손은 조상의 모든 멤버를 상속 받는다.  ((생성자, 초기화 블록 제외))

((부모의 부모가 있을 수 있어서 자손이라고 표현. 부모란 표현 대신 조상이란 표현씀. 바로 위 부모말고 부모의 부모클래스도 있을 수 있으니)) 

 

선택의 여지가 없음. 부모가 맘에 안들든 들든, 부모의 모든 멤버를 무조건 상속 받아야함.

그래서 자손의 멤버 개수가 조상보다 적을 수 없다. (같거나 많다)

 

멤버가 없어보이지만 사실은 상속받은 멤버가 있기에 한개있다.

 

자손의 변경은 조상에 영향을 미치지 않는다. 

자신 멤버 한개(void play 메소드 한개 ) + 상속받은 멤버(int age 필드 멤버 한걔) 총 두개

그래서 자식 클래스는 점점 확장된다. 

 

1번 point3D 와 2번 point3D는 객체로 보면 같다.

1번 클래스도 멤버가 3개 2번 클래스도 멤버가 3개다. (2번클래스는 단지 부모클래스에서 상속받은 멤버가 안보이는 것일 뿐)

 

 

결론. 

상속은 부모클래스 (원서에선 Super{} 클래스)의 멤버(변수, 메소드)를 상속 받은 자식 클래스(원서에선 Sub class{})는 부모클래스의 멤버를 그대로 상속받는다는 것이다.

 

수퍼 클래스를 상속받은 서브 클래스는 수퍼 클래스의 멤버를 명시하지 않아도 서브클래스 생성시에 사용가능하다. 그대로 상속받았으니까. 단, 상속은 선택할 수 없다 모든 멤버는 그대로 상속받아야한다. 상속받고 싶지 않은 부분을 뺴고 상속받는 것은 없다. 

 

자식 클래스의 변경은 부모클래스에 영향을 끼치지 못한다.