507 字
3 分钟
C++入门 (十一) : 继承
继承
面向对象是一个非常非常大的编程范式,类的继承是其中最基本的一个概念,是我们可以利用的最强大的特性之一。继承使类之间有了相互关联的层级关系,换句话说,它使我们拥有一个包含通用功能的积累,然后从这个最开始的父类中可以创建出很多的派生类。
这就是为什么继承非常有用,以为它可以帮助我们避免写很多重复的代码 _code duplication是指我们必须多次地写相同的代码,或者代码略微不同但是实际上是在做相同的事。
为了避免一次次地重复,我们可以把所有通用的_functions_放在一个父类中,然后很容易地从基类(base class)中创建派生类,稍微改变一些功能或者引入全新的功能。
—— 继承给我们提供了这样一种方式:把一系列类的所有通用的代码(功能)放到基类中,这样我们就不用像写模板那样不断重复了。
例子
class Entity{public: float X, Y;
void Move(float xa,float ya) { X += xa; Y += ya; }};
class Player //要做的和Entity类很像,多了个Name和功能{public: const char* Name; float X, Y;
void Move(float xa, float ya) { X += xa; Y += ya; }
void PrintName() { std::cout << Name << std::endl; }};如何继承
class Entity{public: float X, Y;
void Move(float xa,float ya) { X += xa; Y += ya; }};
class Player : public Entity{public: const char* Name;
void PrintName() { std::cout << Name << std::endl; }};此时这个Player类同时是Entity和Player类,Player拥有Entity拥有的所有东西.
Player类是Entity类的超集
多态
多态是一个单一类型,但是有多个类型的意思.
Player既是Player类也是Entity类,当需要Entity类对象的时候可以使用Player类对象(一个函数以Entity对象作为参数,可以传入Player对象)
C++入门 (十一) : 继承
https://dingfengbo.vercel.app/posts/c入门/11-c继承/