定义
继承是面对对象编程技术的一个核心概念,它使得传统的软件开发模式发生了革命性的变化。
继承机制可以创建一个类的堆叠层次结构,每个子类都将继承在它的基类里定义的属性和方法。
通过继承机制,程序员可以对现有的代码进行进一步的扩展,并应用在新的程序中。
基类和子类
基类:可以派生出其他的类,也可以成为父类或超类。 Animal类
子类:从基类中派生出来的类。
Turtle类和Pig类
Animal类拥有Turtle类和Pig类的共同行为:吃东西,睡觉,流口水。我们抽象为方法:eat(),sleep(),drool(),它们是Animal类里的方法,因为每只动物都会做这些动作。
我们将mouth转变为Animal类的一个成员变量(属性),嘴巴是名词所以抽象为类的属性。
class SubClass : public SuperClass{...}
class Pig : public Animal{...}
#include <iostream>
#include <string>
class Animal
{
public:
std::string mouth;
void eat();
void sleep();
void drool();
};
class Pig:public Animal
{
public:
void climb();
};
class Turtle:public Animal
{ void swim();};
void Animal::eat()
{ cout << "I am eating!" << std::endl;}
void Animal::sleep()
{ cout << "I am sleeping! Dont disturb me" <<std::endl;}
void Animal::drool()
{ cout << "我是公的....";}
void Pig::climb()
{ cout << "正在爬树..." << std::endl;}
void Turtle::swim()
{ cout << "正在游泳..." <<std:: endl;}
int main()
{
Pig pig;
Turtle turtle;
pig.eat();
turtle.eat();
pig.climb();
turtle.swim();
return 0;
}
访问控制
C++不仅允许你对在类里定义的方法和属性实施访问控制,还允许你控制可以访问基类里的哪些方法和属性。
public继承的属性和方法的访问级别不发生任何改变,即
public仍可以被所有代码访问
protect只能由基类的子类访问
private只能由基类本身访问