본문 바로가기
스프링

SPRING(7) - 객체 지향의 4대특성 3

by 고유빙글 2021. 7. 29.

상속 : 재사용 + 확장

 

상속은 영단어를 그대로 옮기고 이를 교육에 활용하면서 오해가 생겼다.

단어 그대로의 개념과는 약간 다르다. 

 

이런 분류도로 상속을 이해해야한다. 

객체 지향에서 상속은 상위 클래스의 특성을 하위 클래스에서 상속 ( 특성 상속 ) 하고 거기에 더해 필요한 특성을 추가, 즉 확장해서 사용할 수 있다는 의미다.

그래서 부모 클래스 - 자식 클래스 라는 표현보다는 상위 클래스 - 하위 클래스 또는 슈퍼 클래스 - 서브 클래스라 표현하자.

상위 클래스 쪽으로 갈 수록 추상화, 일반화 됐다고 말하며, 하위 클래스 쪽으로 갈 수록 구체화, 특수화 됐다고 말한다.

 

객체 지향 상속에 있어 정말 중요한 문장이 있다.

" 하위 클래스는 상위 클래스 이다. "

이는 객체 지향 설계 5원칙의 일부이다.

 

고래는 포유류이다. 포유류는 동물이다. 

이처럼 하위 클래스는 상위 클래스이다. 라는 관계가 성립해야만 한다.

흔히 알려진 상속의 아들은 아버지이다. 는 맞지 않기때문에 상속의 개념에 틀리다.

 

그래서 더 이상 저 잘못된 상속의 개념을 넣지는 않겠다.

 

동물 뽀로로 = new 펭귄();

펭귄을 낳으니 동물 역할을 하는 뽀로로라 이름지었다. 

이런식이 된다. 이후에 저자가 좀 더 매끄러운 문장으로 만들겠다한다.

 

마지막으로 첨언하면 상속 ( inheritance ) 라는 표현은 자바에 존재하지 않는다. 확장 ( extends ) 이라는 표현이 존재한다.

 

클래스와 객체의 이름에 있어 객체 참조 변수는 객체를 참조하게되는데, 객체의 특성은 유일무이한 것이기에 클래스명은 클래스답게, 객체 참조 변수명은 객체답게 지어야 한다.

클래스명은 분류스럽게, 객체 참조 변수명은 유일무이한 사물처럼 작명해야 한다.

 

상속에대해 다시 정리하면

객체 지향의 상속은 상위 클래스의 특성을 재사용하는 것이다.

객체 지향의 상속은 상위 클래스의 특성을 확장하는 것이다.

객체 지향의 상속은 is a kind of 관계를 만족해야 한다.