引入
假设我们有一个动物类
class Animal {
public:
int age;
void eat() {
std::cout << "吃东西!" << std::endl;
}
};
又想写一个狗类,它也有年龄,也会吃,除此之外还有种类
class Dog {
public:
const char* kind;
int age;
void eat() {
std::cout << "吃东西!" << std::endl;
}
};
我们发现有重复的代码,如果我们写猫类、鸟类等都要再写一遍,这样很麻烦
那么有没有一种方法能提高代码的复用性,不需要再写一遍就能达到同样的效果呢?
我们让Dog继承Animal
#include<iostream>
class Animal {
public:
int age;
void eat() {
std::cout << "吃东西!" << std::endl;
}
};
class Dog :public Animal {
public:
const char* kind;
};
int main() {
Dog dog;
dog.kind = "柯基";
dog.age = 3;
dog.eat();
}
没有写那部分重复代码却也能给age赋值,调用eat()方法
也就是说,Dog继承了Animal,Animal所拥有的age和eat()它也就有了,就像父亲遗传给儿子一样
- Animal就叫做父类或者基类
- Dog就叫做子类或者派生类
而且,狗本来就属于动物,我们让其继承动物也是符合思维的
单继承和多继承
class A {
};