什么是继承?

时间:2022-04-30 04:24:21

  大家可能看过那部狗血的《继承者们》,ok,在程序中的继承吧,有那点‘继承’的意思,却又不尽相同。举个小栗子来说:你爷爷的money,早晚是你爸爸的,你爸爸的,又早晚是你的。这就是继承。而程序中的继承又是怎么回事呢? 

   要想知道继承是怎么回事,首先搞清楚为什么要有继承这个东西,即目的何在。举个例子可能更好理解。比如你在写一个类<人类>,属性有 姓名、性别、年龄。而你又需要写另一个类<学生类>,学生自然也有姓名,性别和年龄,但又有他特有的属性(如,年级),,你这时要把共有的属性再写一遍吗?当然看起来也没多少代码,可是当你写10个类呢,是不是就有代码冗余的赶脚了?

  So,(attention to) 继承来了。

  继承,就是可以让你少写代码的东西,懒人推动进步嘛(粗俗的理解哈哈)。上述学生类是人类的一个子类(派生类),人类是父类(基类)子类继承父类的属性和方法(不继承私有字段),在子类中可以使用这些成员。(so easy)当创建子类对象时,在子类中会创建父类的对象,默认的调用父类的无参构造函数(方便初始化的东西)。

  使用方法:子类后加 :(父类名)

  还有一个问题,如果父类中写了有参的构造方法,原先默认的无参构造方法就会被干掉,这样子类中创建父类对象时会报错。怎么办么?

  1) 重新自己写一个无参构造函数(low)

  2) 使用 base 关键字,在子类中显示地调用父类的构造函数

  注意,object 类是所有类的基类。

  如果 ,子类的方法和父类方法名相同怎么办?会警告。这时你钓不到父类的方法了。如果你是故意为之,要在子类方法使用 new关键字。如:public new void test()