C++:继承(面向对象三大特性之一)

本文详细介绍了C++中的继承概念,作为面向对象的三大特性之一,继承允许子类继承父类的特性并进行扩展。文章讲解了继承的语法、对象模型、构造和析构顺序、同名成员处理方式,以及多继承和棱形继承,强调了虚继承在解决菱形继承问题中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继承

 

面向对象的三大特征:封装、继承、多态

封装较为简单,就是把客观事物封装成抽象的类,并且类可以把自己的属性和行为只让可信的类或者对象操作,对不可信的进行信息隐藏。前面我们一直在用封装。

本文所讲的继承,可以使用已存在类的所有功能,并在无需重写原来的类的情况下对这些功能进行扩展。通过继承创建的新类称为“子类”或“派生类”。被继承的类称为“基类”、“父类”或“超类”。

继承的过程,就是从一般到特殊的过程。

语法如下:

类A继承类B的所有特征 - class A:public B

A类就是上述所说的子类、派生类 - 一部分是从基类继承过来的,一部分是自己增加的成员;

B类为父类、基类。

先创建一个基类:

class BasePage
{
public:
	void header()
	{
		cout << "标题栏" << endl;
	}
};

倘若我们需要创建其他类,需要用到基类的内容,则采用继承的方式。下面代码创建了Java和CPP两种子类来继承基类,这样这两个子类就得到了基类的所有属性和行为:

class Java:public BasePage
{
public:
	void content()
	{
		cout << "Java内容" << endl;
	}
};
class CPP :public BasePage
{
public:
	void content()
	{
		cout << "CPP内容" << endl;
	}
};

创建一个test函数进行打印,两个子类创建的对象都能使用基类的内容:

void test01()
{
	//页面打印
	cout << "Java:" << endl;
	Java ja;
	ja.header();
	ja.content();

	cout << "CPP:" << endl;
	Java cpp;
	cpp.header();
	cpp.content();
}

这,就是继承。

我们也注意到在继承的时候,用到了public,跟类中的权限一样,也有public公共继承、protected保护继承和private私有继承三种访问权限:

 父类中是private时,子类三种继承方式都不可使用;
子类为public继承时,父类中除private外,都按原来的方式继承;
子类为protected继承时,父类中除private外,都按protected的方式继承;
子类为private继承时,父类中除private外,都按private的方式继承。

好乱感觉,看文字不好理解,做个例子:

先创建一个基类,分别在三种权限下定义变量:

class base
{
public:
	int m_A;
protected:
	int m_B;
private:
	int m_C;
};

然后按不同的继承权限创建三个子类如下:

class son1 :public base
{
public:
	void func()
	{
		m_A = 10;
		m_B = 20;
		m_C = 30;//err
	}
};
class son2 :protected
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值