C++面向对象特点—多态性
2014-03-18 11:05
218 查看
在本章的开头介绍一个RPG游戏的时候,我们就说到不同职业的玩家在发动普通攻击和特殊攻击时,有着不同的效果。在编写程序的时候,我们并不知道用户会选择哪种职业的玩家,那么又该如何保证各种攻击效果和用户选择的玩家是对应的呢?
在使用继承的时候,子类必然是在父类的基础上有所改变。如果两者完全相同,这样的继承就失去了意义。同时,不同子类之间具体实现也是有所区别的,否则就出现了一个多余的类。不同的类的同名成员函数有着不同的表现形式,称为多态性。多态性是符合人的认知规律的,即称呼相同,所指不同。比如,学生类及其子类都有学习这个成员函数,但本科生、中学生、小学生的学习内容并不相同;玩家类的子类都有攻击这项技能,但剑士、弓箭手和魔法师的攻击方法不同。
多态性往往只有在使用对象指针或对象引用时才体现出来。编译器在编译程序的时候完全不知道对象指针可能会指向哪种对象(引用也是类似的情况),只有到程序运行了之后才能明确指针访问的成员函数是属于哪个类的。我们把C++的这种功能称为“滞后联编”。多态性是面向对象的一个标志性特点,没有这个特点,就无法称为面向对象。
在使用继承的时候,子类必然是在父类的基础上有所改变。如果两者完全相同,这样的继承就失去了意义。同时,不同子类之间具体实现也是有所区别的,否则就出现了一个多余的类。不同的类的同名成员函数有着不同的表现形式,称为多态性。多态性是符合人的认知规律的,即称呼相同,所指不同。比如,学生类及其子类都有学习这个成员函数,但本科生、中学生、小学生的学习内容并不相同;玩家类的子类都有攻击这项技能,但剑士、弓箭手和魔法师的攻击方法不同。
多态性往往只有在使用对象指针或对象引用时才体现出来。编译器在编译程序的时候完全不知道对象指针可能会指向哪种对象(引用也是类似的情况),只有到程序运行了之后才能明确指针访问的成员函数是属于哪个类的。我们把C++的这种功能称为“滞后联编”。多态性是面向对象的一个标志性特点,没有这个特点,就无法称为面向对象。
相关文章推荐
- C++之面向对象程序设计的基本特点(抽象、封装、继承、多态)
- 转 C++ 面向对象程序设计的基本特点
- C++内容总结--面向对象语言特点
- C++ 面向对象程序设计的基本特点
- c++==简介及面向对象特点(1)
- JAVA面向对象API————List的子类特点概述
- 深入理解C++面向对象机制(三)构造与析构
- 面向对象实验三(组合、继承与多态性)
- Unix/Linux C++应用开发-C++结构体非面向对象特性
- java和c++在面向对象上有什么区别?
- 关于面向对象一些名词的定义(C++)
- c++ 面向对象类设计五项基本原则
- C++面向对象高级编程(下)第一周-Geekband
- 【c++】面向对象程序设计之继承中的类作用域
- C++面向对象和流
- C++面向对象复习(一)——构造函数
- C++面向对象笔记:构造、析构函数、成员函数
- C++面向对象基础二
- 面向对象 C++ 面试
- C++面向对象复习(四)——指针在面向对象中的应用