C++继承和多态机制详解
需积分: 3 32 浏览量
更新于2024-09-20
收藏 54KB DOC 举报
继承和多态
继承是面向对象编程语言中的一种机制,它允许一个类继承另一个类的属性和方法,从而提高程序的可复用性。继承的主要特点是:子类可以继承父类的所有成员变量和成员函数,子类可以对父类的成员变量和成员函数进行重写和扩展。
在继承中,需要注意两个重要的规则:
1. 如果类A和类B毫不相关,不可以为了使B的功能更多些而让B继承A的功能。这是因为继承关系应该建立在逻辑上的,而不是为了获取更多的功能。
2. 如果类B有必要使用A的功能,则需要分两种情况考虑:(1)若在逻辑上B是A的“一种”(akindof),则允许B继承A的功能。例如,男人(Man)是人(Human)的一种,男孩(Boy)是男人的一种。那么类Man可以从类Human派生,类Boy可以从类Man派生。(2)若在逻辑上A是B的“一部分”(apart of),则不允许B继承A的功能,而是要用A和其它东西组合出B。
多态是面向对象编程语言中的一种机制,它允许将派生类的对象当作基类的对象使用。多态的主要特点是:可以将一个基类的指针指向一个派生类的对象,从而实现了多种类型的对象可以被当作同一种类型的对象来使用。
C++语言中使用关键字virtual来声明一个函数为虚函数,派生类的虚函数将覆盖(override)基类对应的虚函数的功能。多态可以大大提高程序的可复用性和可扩充性。
结合“抽象基类”和“多态”有如下突出优点:
(1)应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。这一招叫“以不变应万变”,可以大大提高程序的可复用性(这是接口设计的复用,而不是代码实现的复用)。
(2)派生类的功能可以被基类指针引用,这叫向后兼容,可以提高程序的可扩充性和可维护性。以前写的程序可以被将来写的程序调用不足为奇,但是将来写的程序可以被以前写的程序调用那可了不起。
在Java语言中,多态可以通过接口和实现类来实现。例如:
public interface Parent(){
public void simpleCall();
}
public class Child_A implements Parent{
public void simpleCall(){
//具体的实现细节;
}
}
public class Child_B implements Parent{
public void simpleCall(){
//具体的实现细节;
}
}
//当然还可以有其他的实现类来实现多态。
继承和多态是面向对象编程语言中两个非常重要的机制,它们可以提高程序的可复用性和可扩充性,但需要正确地使用它们,以免出现问题。
2022-06-11 上传
2022-06-11 上传
2024-10-28 上传
2024-10-27 上传
2024-11-10 上传
2024-10-29 上传
2024-10-27 上传
2024-11-08 上传
xingjiren
- 粉丝: 7
- 资源: 45
最新资源
- 安卓VLC 视频播放器v3.4.4 超强多媒体播放器.txt打包整理.zip
- B-Danckers-Koen-Sonck-Joris-Project-MHP:B-Danckers-Koen-Sonck-Joris-Project-MHP
- gifwnd,c语言bmp源码,c语言项目
- 构建可在WM,TabletPC,iPhone或iPad上运行的Dynamics CRM移动应用程序
- [检测统计]phpMyVisites v2.3 多国语言版_phpmv2.rar
- Spelorienterade-datastrukturer-och-算法
- run-free-开源
- AekpaniNetworks-Covid-Record-System-With-Pagination
- Spanker-emojili-kayit-botu:Kurulumu BiTıkzorlayabilir同类önceayarlar.jsondosyasınıdoldurupsonrasındaspanker.js ve komutlardosyasınıniçerisinidoldurunuz。 Nedenmi configyapmadımçünkübilmeden hataalıpdurdumböyledaha zor ama kaliteli vegelişmişbottaglıalımmodun
- 参考资料-互联网IT行业项目管理规章制度.zip
- Gereesee
- Giochi Online Gratis - Giochi.ws-crx插件
- jianyizongheceshiyi,c语言源码包官网,c语言项目
- senlin-music-node:用于free-to-music项目中的后端接口,nodeJS写的
- Replicated-Data-Storage-System:基于复制键值的多线程数据存储系统
- garbage_collection_api