본문 바로가기
캠퍼스/Java

38.상속

by Sylar 2022. 8. 3.

 

extends 엔진 = 엔진을 상속함

 

해당 코드를 안에 넣은거랑 마찬가지

 

정상적으로 작동하는 모습이지만 우리가 바라는 모습은 아니다.

 

왜냐 ? 엔진과 자동차 라는 이름은 다형성을 해치는 이름이라 쓰면 안된다.

자식은 부모가 가진 상태와 행위를 물려받음 대신, 그 기능은 상속의 요소중 하나임.

 

부모와 자식이 다형성을 해치지 않아야 상속 가능 ( 치즈 햄버거 extends 햄버거 => 치즈 햄버거는 햄버거라 부를 수 있다.)

 

즉, 엔진을 보고 자동차라고 부르지 않으니 다형성을 해치는 표현이라 쓰면 안된다.

 

물론 자바는 그런거 모르고 다 해주긴 한다.

 

적절한 예시를 가져와보자.

 

다형성을 해치지 않는 예시이다. 한국인은 아시아인이며 아시아인은 지구인이다. 한국인이 지구인 이기도 하고.

 

단 class 지구인 extends 아시아인 => 아시아인이 부모 지구인이 자식 = > 상속 불가능

 

모든 지구인이 아시아인은 아니다.

 

각설하고 한국인의 특징을 아주 조금 들고왔다. 팔이 2개 다리가 2개 머리는 검정 피부색은 황토색이다.

 

 

 

 

아시아인과 지구인에게 특징을 나눠주었다.

 

아시아인은 공통적으로 머리가 검정색이고

 

지구인은 공통적으로 팔다리가 두개다.

 

 

지구인의 자식클래스는 아시아인 이고 아시아인의 자식태그는 한국인으로 설정했다.

 

한국인을 호출해서 출력시킨 결과다

 

한국인은 faceColor 의값 밖에 없는데 다 출력된다.

 

이게 상속이다.

 

 

 

view 할때 아시아인을 부르면 지구인 아시아인 나오지만, 자식은 호출을 안하기 때문에 faceColor의 값을 찾을 수 없다.

 

 

위 두 사진은 에러가 안났다 

 

한국인을 위에 불러옴으로서 모든걸 다 불러옴 ( 지구인 > 아시아인 , 아시아인 > 한국인 서로 상속해줌)

 

'캠퍼스 > Java' 카테고리의 다른 글

40. 동적 바인딩 (2)  (0) 2022.08.04
39.동적 바인딩 (1)  (0) 2022.08.04
37. 오버로딩  (0) 2022.08.02
36. 생성자  (0) 2022.08.02
35.OOP, 캡슐화, 상속  (0) 2022.08.02