본문 바로가기
back-end/JAVA

20)객체지향-클래스 간의 관계-상속(Inheritance)

by 모두의 향연 2021. 5. 29.
728x90
반응형

20) 객체지향-클래스 간의 관계-상속(Inheritance)

 

 

1. 정의

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

-두 클래스를 부모와 자식의 관계

 

 

2. 형식

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

   …

}

extends: 확장하다(즉, 'Parent를 확장해서 Child를 만들겠다'라는 뜻입니다)

 

 

3. 실제 구현

조상클래스와 자식클래스

 

4. 특징

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

(‘부모’가 아니라 ‘조상’이라고 쓴 이유는 부모의 부모 즉, 할머니 할아버지 재산까지 상속받기 때문. 선택의 여지도 없고 그냥 주면 다 받아야 함, 얼굴 마음에 안 들어도 어쩔 거야.. 주신대로 물려받아야지)

-자손의 멤버 개수는 조상보다 적을 수 없다(=같거나 많다)

 

 

5. 예시

조상으로부터 받은 멤버 개수: 1개

자신의 멤버: 0개

Child class의 멤버 총 개수: 1개


 

조상으로부터 받은 멤버: 1개

자신의 멤버: 1개

Child class의 멤버 총 개수: 2개

 

 

6. 도대체 왜 쓰나요?

1번에서는 기존의 Point클래스와 Point3D는 관계없는 클래스 가능하다. 

Point3D는 Point클래스를 상속받지 않기 때문에 Point클래스가 바뀌어도 Point3D클래스는 영향받지 않는다.

 

2번에서는 Point3D가 Point클래스를 상속받기 때문에 변수 z만 써도 되니, 코드 작성이 간편하다.

하지만 Point3D는 Point클래스를 상속받기 때문에 Point클래스가 바뀌면 영향을 받는다. 

 

실제 객체를 만들면 둘 다 같은 모양이다(객체를 그리면 위 그림과 같이 모양이 똑같다)

대신에 부모가 자식에 영향을 미치냐 안 미치냐 차이입니다. 

 

 

 

 

*유튜브 남궁성 선생님의 `자바의 정석`을 참고하여 만들었습니다*
*자세히 보고 싶은 분들은 유튜브 가서 보시면 됩니다*

728x90
반응형