상세 컨텐츠

본문 제목

[c++]클래스와 상속

c++

by 래모 2021. 1. 26. 16:54

본문

상속

: 기존에 존재하는 유사한 클래스로부터 속성과 동작을 이어받고 자신이 필요한 기능을 추가하는 기법

 

상속

장점

  • 상속을 통하여 기존 클래스의 필드와 메소드를 재사용
  • 상속을 이용하게 되면 복잡한 GUI프로그램을 순식간에 작성
  • 신뢰성 있는 소프트웨어를 손쉽게 개발, 유지 보수
  • 코드의 중복을 줄일 수 있음
class Car { // 수퍼클래스
    int speed;
}
class SportsCar : public Car { // 서브클래스
    bool turbo;
}

자식 클래스는 부모클래스를 포함

상속이 어떻게 쓰이는가?

#include <iostream>
#include <string>
using namespace std;

class Car {
public:
	// 3개의멤버변수선언
	int speed; // 속도
	int gear; // 주행거리
	string color; // 색상
	// 3개의멤버함수선언
	void setGear(int newGear) { // 기어설정멤버함수
	gear = newGear;
	}
	void speedUp(int increment) { // 속도증가멤버함수
	speed += increment;
	}
	void speedDown(int decrement) { // 속도감소멤버함수
	speed -= decrement;
	}
};

// Car 클래스를상속받아서다음과같이SportsCar 클래스를작성하여보자.
class SportsCar : public Car { // Car를상속받는다.
	// 1개의멤버변수를추가
	bool turbo;
public:
	// 1개의멤버함수를추가
	void setTurbo(bool newValue) { // 터보모드설정멤버함수
	turbo = newValue;
	}
};

int main()
{
	SportsCar c;
	c.color = "Red"; // 부모클래스멤버변수접근
	c.setGear(3); // 부모클래스멤버함수호출
	c.speedUp(100); // 부모클래스멤버함수호출
	c.speedDown(30); // 부모클래스멤버함수호출
	c.setTurbo(true); // 자체멤버함수호출
	return 0;
}

자식 클래스는 부모 클래스의 변수와 함수를 자기것처럼 이용 가능

 

상속은 여러 단계로도 이용할 수 있음

상속계층도

 

접근 제어 지정자

접근 지정자 현재 클래스 자식 클래스  외부
private O X X
protected O O X
public O O O

 

상속에서의 생성자와 소멸자

상속에서 생성자와 소멸자의 호출

멤버 함수 재정의

: 자식 클래스가 필요에 따라 상속된 멤버 함수를 다시 정의하는 것

#include <iostream>
#include <string>

using namespace std;
class Car {
public:
	int getHP()
	{
	return 100; // 100마력반환
	}
};

class SportsCar : public Car {
public:
	int getHP()
	{
	return 300; // 300마력반환
	}
};

int main()
{
	SportsCar sc;
	cout << "마력: " << sc.getHP() << endl;
	return 0;
}

 

재정의의 조건

=> 부모 클래스의 멤버 함수와 동일한 시그니처를 가져와야 함 = 멤버 함수의 이름, 반환형, 매개 변수의 개수와 데이터 타입이 일치해야함

 

다중 상속

: 하나의 자식 클래스가 두 개 이상의 부모 클래스로부터 상속받는 것

class Pickup_Truck : public Car, public Truck
{
	...// 추가된 멤버
	...// 재정의된 멤버
}

다중 상속

*멤버 호출시 어떤 클래스의 멤버인지 모호하게 될 수도 있으므로 주의!*

'c++' 카테고리의 다른 글

[c++]생성자와 소멸자  (0) 2021.01.20
클래스의 기초  (0) 2021.01.20
배열과 포인터  (0) 2021.01.17

관련글 더보기