C++继承
程序员文章站
2022-05-31 20:16:48
...
继承
C++中的继承,允许我们依据一个类来创建另一个类,称为父类和子类,父类的部分内容可以在子类中使用。继承呢又分为单继承和多继承,单继承很好理解,就是只有一个父类。多继承有多个父类。就举个例子,记得小时候家里种冬瓜和西瓜,我们知道冬瓜个头特别大,西瓜个头不是很大,但可以直接吃很甜。所以就把两个幼苗的表皮刮破,然后紧紧的绑在一起,过一段时间两株幼苗长在了一起,然后将西瓜的根部和冬瓜的头部剪掉,这样剩下的一株植物就是冬瓜的根西瓜的叶子。这样长出来的西瓜个子像冬瓜一样大。多继承就和这个相似,子类继承多个父类的属性,最终形成一个功能强大的类。
单继承
如何定义子类呢?
class 子类名字:继承方式 父类的名字
继承方式有三种,分别是public、protected、private.那么这三种继承方式分别有什么特点呢?
- public继承:父类的公有成员成为子类的公有成员,保护成员成为子类的保护成员,私有成员子类不可以直接访问,可以通过父类的公有成员或者保护成员来访问。
- protected继承:父类的公有成员成为子类的保护成员,保护成员成为子类的保护成员,私有成员子类成员不可直接访问。
- private继承:父类中的公有成员和保护成员成为子类的私有成员。父类的私有成员不可以直接访问。
#include <iostream>
using namespace std;
class shape{
public:
void setW(int w);
void setH(int h);
shape();
~shape();
protected:
int getW(void);
int getH(void);
private:
int width;
int height;
};
shape::shape()
{
cout << "父类构造函数被调用" << endl;
}
shape::~shape()
{
cout << "父类析构函数被调用" << endl;
}
void shape::setW(int w)
{
this->width = w;
}
void shape::setH(int h)
{
this->height = h;
}
int shape::getW(void)
{
return this->width;
}
int shape::getH(void)
{
return this->height;
}
/*
公有继承,父类的公有成员成为子类公有成员,保护成员成为子类的保护成员
父类的私有成员不能被子类直接访问,需要通过父类的公有或保护成员去访问。
*/
class rect:public shape
{
public:
int getS();
rect();
~rect();
};
rect::rect()
{
cout << "子类构造函数" << endl;
}
rect::~rect()
{
cout << "子类析构函数" << endl;
}
int rect::getS()
{
return getH() * getW();
}
int main()
{
rect r;
r.setW(10);
r.setH(20);
cout << "The Rectangle area is :" << r.getS() << endl;
return 0;
}
运行结果:
父类构造函数被调用
子类构造函数
The Rectangle area is :200
子类析构函数
父类析构函数被调用
多继承
多继承的定义形式
class 子类:继承方式 父类A,继承方式 父类B,....
上一篇: 关于maven本地仓库配置路径, 及JDK全局属性
下一篇: 蓝桥杯 算法提高 素数求和