在这节,我们来看C#中类的继承。
类是将对象抽象成变量和方法的集合。当我们定义一个新类B时,如果该类拥有之前定义的类A的全部特征,那么就可以将A作为基类,而将B作为A的子类(派生类),使B继承A全部的成员变量和方法,不论是public、protected还是private,大大减少了代码的重复。在派生类中,这些变量和方法可以直接使用。
但是注意,基类中的private变量是不能在派生类的方法中访问的,protected变量可以。
如何判断两个类A和B是否符合继承关系?问自己一个问题:B是A吗?例如男人和女人都是人,所以Man和Woman这两个类可以从Human类中派生。一个反例:有一个点Point类和一个圆Circle类,Circle显然有一个Point类的圆心,但Circle类可以从Point类中派生吗?不可以,因为圆不是一个点。实际上,Point类的圆心是Circle类中的一个成员,应该在Circle类中包含一个Point类的圆心变量。这种关系称为组合关系。
Tips:继承关系的使用需要谨慎。从设计模式角度来讲,继承可能使代码结构灵活性更差或出现隐蔽的bug。即使两个类符合“是"的关系,有时也要考虑使用组合的处理方法,即在B中包含一个A的成员变量。
C#中继承的语法和C++类似:
class 子类名 : 基类名
{
}
Tips:在Java中,继承要使用extends关键字而非冒号
在Unity中,我们创建一个新的脚本时默认生成的代码是这样的:
using System.Collections;
using System.Collections.Generic;
using<