关于抽象类(Abstract)和接口(Interface)在使用的时候的思考
写在前面
抽象类和接口都定义了一系列的抽象成员,可以在继承的派生中重新实现。
那么引出问题 ——
- 为什么有了抽象还需要有接口
- 都是定义了部分抽象成员,二者有什么区别
- 使用场景
抽象理解
抽象相当于讲述了 “ 你是什么 ”,比如哺乳动物是动物;玩家是人;三角形是一个几何图形 ……
当我们知道所有的动物的共同特征的时候,就可以封装成一个抽象的动物类,接着在其他的动物类别(比如爬行动物、哺乳动物等)继承动物抽象类,指明所有动物共有的默认行为或者属性之类。
抽象类通过简单的继承,实现了多态,化简了重复代码、提升代码的逻辑性;
只能单继承,可以有成员变量
接口理解
接口相当于讲述了 “ 你可以做什么 “,即鸟可以飞,飞机也可以飞,所以可以把飞作为它们可以干的事情封装成一个接口
你可能是一个普通的GameObject,但是依旧可以响应鼠标点击事件,于是可以再继承一个鼠标点击事件的接口,然后实现当接受到鼠标点击事件的时候所需要做出的逻辑即可。
接口类似于一种 “ 游戏规则 ”,继承了这个接口,必须实现这个接口里的东西。又由于可以继承多个接口,所以可以相当于 “ 拓展方法 ” 来使用。