C++/상속과 다형성

상속시 상위 메소드의 오버라이드

(14003,14004)

Dog의 하위 클래스인 NoisyDog 클래스를 정의하고 Bark 메소드를 새로 정의한다.

NoisyDog는 일반 개보다 시끄럽게 짖는 개이다.

새로운 bark 메소드는  "멍멍! 멍멍! 멍멍!"을 출력한다.



#include <iostream>
using namespace std;
class Dog{
        public:
                Dog();
                void Bark();

};
class NoisyDog: public Dog{
        public:
                NoisyDog();
                void Bark();
};

Dog::Dog(){
        std::cout << "Dog의 생성자가 호출되었습니다. \n" ;
}
void Dog::Bark(){
        cout << "멍멍" << endl;
}
NoisyDog::NoisyDog(){
        //기본 생성자
}

//14003
void NoisyDog::Bark(){
        cout<<"멍멍! 멍멍! 멍멍!"<<endl;
}

//14004

void NoisyDog::Bark(){ 
        Dog::Bark(); //상위 클래스의 동일한 이름의 함수를 호출하도록 수정한다.
}


int main(){

        NoisyDog nd;

        nd.Bark();

}


<실행결과>


Dog의 생성자가 호출됨.
NoisyDog의 생성자가 호출됨.
멍멍
멍멍
멍멍