覆盖方法
我们需要在基类里提供一个通用的函数,但在它的某个子类里需要修改这个方法的实现,在C++里,覆盖(overriding)就可以做到。
为我们的Animal添加eat()方法,并在Pig和Turtle中覆盖。
#include<iostream>
#include<string>
using namespace std;
class Animal//父类
{
public:
string mouth;
void eat();
void sleep();
void drool();
};
class Pig:public Animal//子类 ,用':' 不要忘了public
{
public:
void climb();
void eat();//覆盖
};
class Turtle:public Animal
{
public:
void swim();
void eat();
};
void Animal::eat()
{
cout<<"正在进食中~"<<endl;
}
void Animal::sleep()
{
cout<<"洗洗睡了~"<<endl;
}
void Animal::drool()
{
cout<<"垂涎三尺而不得,可怖";
}
void Pig::climb()
{
cout<<"猪,所以会爬树,即使它们不能"<<endl;
}
void Pig::eat()
{
cout<<"正在进食的猪,不要打扰哦~"<<endl;
}
void Turtle::swim()
{
cout<<"被水淹没,不知所措,可怜,可怜"<<endl;
}
void Turtle::eat()
{
cout<<"“龟龟!”发出了龟龟的声音,正在进食呢~"<<endl;
}
int main()
{
Pig pig;
Turtle turtle;//类的初始化
pig.eat();
turtle.eat();
pig.climb();
turtle.swim();
return 0;
}
覆盖前:
覆盖后: