今天学习面向对象三大特征之一的继承,学习之前先了解什么是继承,通过下面两句话应该可以帮助我们更好更快速地区分和理解什么是继承
1)孙悟空继承自猴类,猪八戒继承自猪类
2)黔金丝猴继承自猴类,金华猪继承自猪类
直接给出答案了第二句关于继承的说法正确,因为继承指的是类与类之间的关系,第一句是说的是对象与类(之前说过类与对象直接的区别,不再赘述)
继承中的名词:基类与派生类和父类与子类,前两个一组,后两个一组都是一个意思,继承都是子类继承自父类(派生类继承自基类);
注意:所有的类都隐式的继承自Object类,自己随便写个类即使类里面什么都不写,实例化其对象后,对象点成员会发现里面有几个方法(公共的),这几个方法就继承自Object类
明白了继承是怎么回事再说使用继承的好处:1)代码重用2)实现多态(之后学习)
例如:有两个类Teacher与Student,Teacher类中有姓名,性别,年龄,工资属性,有一个教学和学习的方法;Student类中有姓名,性别,年龄,学位属性,一个学生学习的方法
现在学习的一种方式是通过两个不同的类,提取其共有的成员作为父类,再由这两个类继承(也有先写父类的),这种方式个人感觉比较好理解先用这个作为学习的切口
由此提取的父类包括姓名,性别,年龄属性,还有一个学习方法,由这些共有的公共成员,定义一个名为People的类,类中就由这些成员组成(成员,属性,方法这些名词的区别之前说过)
父类People,访问修饰符一般都是public,其他的暂时不说
下面开始书写由Teacher与Student类继承People类的代码
继承代码
继承的书写格式是:子类名称后面冒号加父类名称(注意访问修饰符)
例子中代码都写在了Program.cs文件中,自己也可以在此项目中添加相应的类,之前说过添加类的方法;类中所有属性都使用了自动属性以便于截图,教师类中有一个工资属性(涉及财务类的一般都声明为decimal类型);学生类中只有一个学位属性(可以使用枚举,防止出现类似家里蹲学位......),共有一个学习的方法,暂时方法实现内容一样,之后学习多态时,会对方法进行重写以达到方法复用的目的
继承自父类的公有成员
之前说过学生类中只有一个学位属性,此时却能点出这么多成员,一部分是继承自父类还有一部分继承自Object类(隐式的),继承的第一个好处代码复用是不是很好用