`
java-mans
  • 浏览: 11456611 次
文章分类
社区版块
存档分类
最新评论

再谈继承

 
阅读更多

继承:

继承是指一个对象直接使用另一个对象的属性和方法。在面向对象编程中,都有类的继承。C++中类继承总共有三种方式实现,包括:公有继承(public)、私有继承(private)、保护继承(protected)。继承可以使现有的代码具有可重用性和可拓展性。

C++类继承中,一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基类派生的继承为单继承;从多个基类派生继承称为多继承。

公有继承(public):

基类的公有成员和保护成员可以作为派生类的公有成员和保护成员。

派生类的成员函数可以访问基类中的公有成员和保护成员,无法访问基类中的私有成员。

派生类的对象可以访问基类的公有成员。

私有继承(private):

基类的公有成员和保护成员都作为其派生类的私有成员。

在私有继承中,基类的成员只能由直接派生类访问,而无法再往下继承。

保护继承(protected):

基类的所有公有成员和保护成员都称为派生类的保护成员。

基类的公有成员和保护成员只能被他的直接派生类成员函数或友元访问。


构造函数和析构函数不能被继承:

因此构造派生类的对象时,需要对基类数据成员,新增数据成员和成员对象的数据成员进行初始化。

派生类构造函数的参数表部分既需要包含子类某些数据成员初始值,也要包含基类的数据成员的初始值。

如果没有默认的构造函数,那么派生类必须具有给基类构造函数提供参数的构造函数。

派生构造函数一般语法:

派生类名 :: 派生类名(参数总表) : 基类名(参数表1), ... 基类名(参数表n)

{

初始化语句

}

当基类有多个构造函数时,编译器根据派生类构造函数为基类构造函数提供的参数初始化列表中的参数类型来确定调用哪个构造函数。

派生类的析构函数应当首先对派生类新增的普通成员进行清理。

然后对派生类新增成员进行清理。

最后对所有从C++ 类继承来的成员进行清理。


创建一个派生类对象时,如果基类带有构造函数,则先调用基类的构造函数,然后调用派生类的构造函数;派生类对象被撤销时析构函数的调用次序刚好和构造函数的调用次序相反。

类中公有成员继承后在子类中仍然是公有成员。


基本概念:

继承是C++语言中的一种重要机制,也是面向对象的一个重要特征,实现了面向对象设计思想中软件复用的功能。继承的实质就是通过现有的类的特征,构造出一个具有现有类的特征的新类,这个新类称为派生类。派生类是从一个或者多个以前定义的类(基类)继承数据和函数(方法),同时中增加或者冲定义数据和函数。这样就具有类的层次性了。

另一方面,继承就是创建一个具有别的类的属性和方法的新类。继承和派生就是人们认识事情的过程。例如交通工具类就是一个基类,假设这个类有两个子类,也叫做派生类,分别是汽车类和轮船类。

每个类有且仅有一个父类,而子类也仅有一个父类。


当从基类派生出新的类的时候,可以对新类做的操作有:

1、可以增加新的成员变量;

2、可以增加新的成员函数;

3、可以重新定义已有的成员函数;

4、可以改变现有的成员属性。


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics