-
먼저 상속이란 기존의 클래스에 새로운 기능을 추가할 수 있다.
또한 클래스가 나타내고 있는 데이터에 다른 것을 더 추가할 수 있다.
클래스 메서드가 동작하는 방식을 변경할 수 있다.
오리지널 클래스를 기초 클래스, 상속받는 클래스를 파생 클래스라 한다.
나는 예제로 Time을 기초 클래스로 할 것이다.
class NewTime : public Time { }; // Time이란 클래스를 오리지널 클래스로하여 NewTime 클래스를 만들었다.
1. 파생 클래스형의 객체 안에는 기초 클래스형의 데이터 멤버들이 저장된다.
2. 파생 클래스형의 객체는 기초 클래스형의 메서드들을 사용할 수 있다.
3. 파생 클래스는 자기 자신의 생성자를 필요로 한다.
4. 파생 클래스는 부가적인 데이터 멤버들과 멤버 함수들을 임의로 추가할 수 있다.
class NewTime : public Time { private: int day; public: NewTime(); NewTime(int, int, int); }; #endif
파생클래스인 NewTime에서 디폴트생성자와 매개변수가 있는 생성자를 선언했다.
정의할때는 NewTime 멤버인 day와 Time 클래스 멤버인 hours, mins를 갖게 된다.
단, 여기서도 addHours나 addMins같은 public 함수에는 접근할 수 있지만, private에있는 hours, mins에는 직접적으로 접근하지못한다. 이를 해결하기위해 파생클래스의 객체에 들어가기전에 기초 클래스의 객체가 먼저 생성되어야 한다.
NewTime::NewTime() : Time() { day = 0; } NewTime::NewTime(int h, int m, int d) : Time(h,m){ day = d; } void NewTime::print() { std::cout << "일 : " << day << std::endl; show(); }
기존 hours와 mins는 0으로 초기화되어있기때문에 나는 day만 0으로 초기화해주었다.
h와 m은 파생클래스것을 기초클래스가 받아서 설정되어있기때문에 day만 초기화해주면된다.
위와 같이 출력되었다.
'C++' 카테고리의 다른 글
C++ public 다형 상속 (0) 2025.03.31 C++ 연산자 오버로딩 (0) 2025.03.29 C++ 생성자와 소멸자 (0) 2025.03.29 C++ 추상화와 클래스 (1) 2025.03.28 C++ 분할 컴파일 (0) 2025.03.27