상속

상속의 개념

  • 상속이란, 기존 클래스(부모 클래스, Base Class)의 멤버와 메서드를 새로운 클래스(자식 클래스, Derived Class)가 물려받는 기능입니다.

  • 코드를 재사용하고, 클래스 간 계층 구조를 생성할 때 사용합니다.

is a, has a

비교 항목
is-a 관계
has-a 관계

의미

A는 B이다

A는 B를 가지고 있다

문법

상속(class A : public B)

포함(B b;)

사용 목적

종류 분류, 기능 확장

부품 구성, 소유

Dog is-a Animal

Car has-a Engine

실습 예제

ch07ex01_Animal.cpp

  • Animal 클래스

    • 속성: name

      • 메서드: setName(string new_name), speak(), sleep(), walk()

  • Dog 클래스

    • Animal 클래스 상속

    • 메서드: bark()

ch07ex02_Duck.cpp

  • Animal 클래스

    • 속성: name, foot

      • 메서드: setName(string new_name), speak(), sleep(), walk()

  • Duck 클래스

    • Animal 클래스 상속, foot 속성 변경

    • 메서드: bark()

실습 예제

ch07lab1_vehicle.cpp

  • Vehicle (기본 클래스):

    • 속성:

      • brand: 이동수단의 브랜드 (문자열).

      • wheels: 이동수단의 바퀴 수 (정수).

    • 메서드:

      • printInfo(): 이동수단의 정보를 출력하는 함수.

  • Car (자동차, Vehicle 클래스를 상속):

    • 속성:

      • doors: 자동차의 문 수 (정수).

    • 메서드:

      • move(): 자동차가 도로를 따라 이동하는 방식에 대한 구체적인 구현.

      • printInfo(): 자동차의 정보를 출력합니다 (브랜드, 바퀴 수, 문 수).

  • Bicycle (자전거, Vehicle 클래스를 상속):

    • 속성:

      • hasBell: 자전거에 벨이 있는지 여부 (불린 값).

    • 메서드:

      • move(): 자전거가 도로를 따라 이동하는 방식에 대한 구체적인 구현.

      • printInfo(): 자전거의 정보를 출력합니다 (브랜드, 바퀴 수, 벨 유무).

관계:

  • CarBicycleVehicle 클래스를 상속받습니다. 즉, Vehicle 클래스는 기본 클래스이고, CarBicycle은 파생 클래스입니다.

  • 각 파생 클래스는 Vehicle 클래스에서 정의된 메서드를 오버라이드하여 각 이동수단에 맞는 동작을 구현합니다.

Last updated