1、何为继承
C++中所谓继承,就是在一个已存在类的基础上创建一个新的类,新类获得已存在类的部分特性(为什么是部分特性,后面会讲到)。已存在类被称为基类(Base Class)或父类(Father Class),新建类被称为派生类(Derived Class)或子类(Son Class)。
继承的声明形式:
class 派生类名:[继承方式] 基类列表
{
派生类增加的特性;
}
2、分类
继承在C++中有单继承与多继承的分类。
单继承:派生类有且只有一个基类
多继承:派生类两个或两个以上的基类
文字描述不过瘾,给出声明方法、模型及实例:
①简单的单继承声明方法、模型及实例:
class 派生类名:[继承方式] 基类名
{
派生类增加的特性;
}
class Base //父类/基类
{
void Fun()
{
cout << "Base" << endl;
}
protected:
int data;
};
class Derived1: public Base //子类1/派生类1
{
void Fun()
{
cout << "Derived1" << endl;
}
private:
int _data;
};
class Derived2: public Base //子类2/派生类2
{
void Fun()
{
cout << "Derived2" << endl;
}
private:
int _data;
};
②简单的多继承声明方法、模型及实例:
class 派生类名:[继承方式] 基类列表
{
派生类增加的特性;
}
class Base1
{
void Fun()
{
cout << "Base" << endl;
}
protected:
int data1;
};
class Base2
{
void Fun()
{
cout << "Base" << endl;
}
protected:
int data2;
};
class Derived: public Base1, public Base2
{
void Fun()
{
cout << "Derived" << endl;
}
private:
int _data;
};
3、继承方式
先来回忆一下继承的声明形式:
class 派生类名:[继承方式] 基类列表
{
派生类增加的特性;
}
其中,继承方式分为共有(public)、私有(private)、保护(protected)之分,不同的继承方式会产生不同的继承效果(class默认继承方式是私有,struct默认继承方式是公有,但最好还是显示给出继承方式,这样会使程序更加清晰)。
继承方式的区别:
public:基类的非私有成员在派生类中的访问属性不变,基类的私有属性在派生类中存在但不可见。
protected:基类的非私有成员都称为派生类中的保护成员,基类的私有属性在派生类中存在但不可见。
private:基类的非私有成员都称为派生类中的私有成员,基类的私有属性在派生类中存在但不可见。
以上就是为什么说只是基类的部分特性在派生类中可见。
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;
class Base
{
public:
Base()
{}
~Base()
{}
void ShowBase()
{
cout << "ShowBase" << endl;
cout << "pri = " << pri << endl;
cout << "pro = " << pro << endl;
cout << "pub = " << pub << endl;
}
private:
int pri;