Skip to content

Latest commit

 

History

History
27 lines (22 loc) · 1.25 KB

Item32.md

File metadata and controls

27 lines (22 loc) · 1.25 KB

항목32. public 상속 모형은 반드시 "is-a(...는 ...의 일종이다)"를 따르도록 만들자

기본 클래스와 파생 클래스

  • 파생 클래스 타입으로 만들어진 모든 객체는 기본 클래스 타입의 객체이지만 반대는 되지 않는다.
    • 기본 클래스는 파생 클래스보다 더 일반적인 개념을 나타낸다.
    • 파생 클래스는 기본 클래스보다 더 특수한 개념을 나타낸다.
void eat(const Person& p); // 먹는것은 누구든 함
void study(const Sttudent& s); // 공부는 학생만함

Person p; // p는 Person의 일종
Student s; // s는 Student의 일종

eat(p); // 문제 없음
eat(s); // 문제 없음 s는 Student이고 Student는 Person의 일종

study(s); // 문제 없음
study(p); // 에러. p는 Student가 아니다.
  • public 상속에서만 가능하다.
  • private 상속은 의미 자체가 완전히 다르다.
  • public 상속은 기본 클래스 객체가 가진 모든 것들이 파생 클래스 객체에도 그대로 적용된다고 단정한다.

클래스 사이에 맺을 수 있는 관계