欢迎来到天天文库
浏览记录
ID:57844744
大小:746.00 KB
页数:67页
时间:2020-09-03
《类的继承与派生 谭浩强C++.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、类的继承与派生前面我们主要讨论了面向对象程序设计的第一个重要机制-数据的封装与隐藏特性。而面向对象程序设计中另一个重要机制就是代码的可重用性,代码可重用性的特征实现的主要机制之一就是类的继承。类的继承机制自动为一个类提供来自于另一个类的操作和数据结构,这使得程序员只需在新类中定义已有类中没有的成分来建立新类。更为实际的意义就在于,类的继承机制给程序员提供了无限重复利用程序资源的一种有效途径。通过C++语言中的继承机制,可以扩充和完善旧的程序设计以适应新的需求,这样不仅可以节省程序开发的时间和资源,并且为未来程序设计增添了新的资源。1.基类和派生类2.单继承3.多继承
2、4.虚基类综上所述,理解继承是理解面向对象程序设计所有方面的关键。所以,本章是整个面向对象程序设计中的重点内容。通过本章的学习,主要理解与掌握基类和派生类、单继承、多继承及虚基类的基本概念及其它们在面向对象程序设计中的基本应用。基类和派生类继承的机制提供了利用已有的数据类型来定义新的数据类型的途径。所定义新的数据类型不仅拥有新定义的成员(数据成员与成员函数),而且还同时拥有已存在的成员。我们将这种利用已知的类来定义新类的机制称之为类的继承。我们称已存在的用来定义新类的类为基类,又称为父类。由已存在的类派生出的新类称之为派生类,又称为子类。这样,派生类继承了它父类的属
3、性和操作。同时,在子类中也可声明新的属性和新的操作,剔除了那些不适合于其用途的继承下来的操作。这种机制,使得程序员可重用父类的代码,将注意力集中在为子类编写新的代码。继承是我们理解事物,解决问题的方法。继承可帮助我们描述事物的层次关系,帮助我们精确地描述事物,帮助我们理解事物的本质。在解决某一问题时,只要弄清事物所处的层次结构,也就找到了对应的解决方法。在C++语言中,一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基类派生的继承称为单继承。从多个基类派生的继承称为多继承。单继承形成了类的层次,像一棵倒挂的树。多继承形成了一个有向无环图。如图所示。基类和派
4、生类ABC(a)单继承XYZ(b)多继承基类和派生类一.派生类的定义单继承的定义格式如下:class<派生类名>:<继承方式><基类名>{<派生类新成员的定义>};其中,<派生类名>是新定义的一个类的名字,它是从<基类名>中派生的,并且按指定的<继承方式>派生的。<继承方式>常使用下列三种关键字给予描述:public:表示公有继承。private:表示私有继承。protected:表示保护继承。这三种继承的意义,在后讨论。基类和派生类多继承的定义格式如下:class<派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>,....{<派生类新成员的定义>
5、};二.派生类的三种继承方式公有继承(public)、私有继承(private)和保护继承(protected)是常用的三种继承方式。⒈公有继承(public)公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的。⒉私有继承(private)私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所继承与访问。基类和派生类⒊保护继承(protected)保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,而这种继承关系还
6、可向其子类进行传递。基类的私有成员仍然是私有的。为了进一步理解三种不同继承方式在其成员的可见性方面的区别,下面从三种不同角度进行讨论。⑴基类成员对基类对象的可见性:在基类外部,通过基类对象对基类成员的可访问性。⑵基类成员对派生类成员函数的可见性:派生类成员对继承下来基类成员的可访问性。⑶基类成员对派生类对象的可见性:在派生类外部,通过派生类对象对基类成员的可访问性。对于公有继承方式:⑴基类成员对基类对象的可见性:公有成员可见,其它不可见。这里保护成员等同于私有成员。基类和派生类⑵基类成员对派生类成员函数的可见性:公有成员与保护成员可见,而私有成员不可见。这里保护成员
7、等同于公有成员。⑶基类成员对派生类对象的可见性:公有成员可见,其它成员不可见。结论:在公有继承时,派生类的对象可以访问基类中的公有成员。派生类的成员函数可以访问基类中的公有成员和保护成员。对于私有继承方式:⑴基类成员对基类对象的可见性:公有成员可见,其它成员不可见。⑵基类成员对派生类成员函数的可见性:公有成员和保护成员可见,而私有成员是不可见的。⑶基类成员对派生类对象的可见性所有成员都是不可见的。结论:在私有继承时,基类的成员只能由直接派生类访问,而无法再往下继承。基类和派生类对于保护继承方式与私有继承方式的情况基本相同。两者的区别就在于,基类的公有成员与保护成
此文档下载收益归作者所有