继承和多态
一.继承概述
1.什么是继承:
如果类A继承自类B,类B又继承类C,那么根继承的传递性类A也可以具备类C的属性和方法
我们需要注意的是,如果一个类我们眼睛去看的时候没有继承任何类,那么默认继承object
2.如何避免这种冗余
创建一个新的Employee,将PM类和SE类中的公共属性都提取出来放在这个类中
删除PM和SE类中的公共部分,保留他们各自独有的成员
编写代码验证是否成功复用代码,PM类和SE类还能否提取出来的属性
二.继承的概念
继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用已存在的类的功能
继承:在C#中,类可以继承自另一个类
衍生的类(子类)继承父类的方法和数据成员
语法:
class 子类:父类
{
}
父类叫基类 子类叫派生类
三.关键字base的作用
可以调用父类的属性,也可以调用自身的属性
四.子类的构造函数
1.继承机制很好的解决了代码复用的问题
2.子类继承父类的成员,并且可以拥有自己特有的成员
3.base关键字可以调用父类的属性,方法和构造函数
4.在子类中,如果不使用base关键字来显示调用基类的构造函数则将隐式调用默认的构造函数
5.protected访问修饰符修饰的成员允许被子类访问
五.继承的作用
1.继承的特性
C#中还有一个特殊的关键字sealed,用它修饰的类是不能被继承的,我们称这种类为密封类
(常用的string就是密封类)
2.继承的价值
继承模拟了现实世界的关系,OOP中强调一切皆对象,这符合我们面向对象编程的思考方向
继承实现了代码重用,这在示例中我们已经有所体会,合理的使用继承可以使代码更简洁
继承使得程序建构清晰,子类和父类的层次结构清晰,最终的目的是使子类只关注子类的相关行为和状态,无须关注父类的行为和状态
六.实现多态
1.实现方法重写
父类定义sayhi()方法,用virtual关键字定义为虚方法
在子类中定义子类自己的sayhi()方法,用override关键字修饰,就实现了对父类sayhi()方法的重写
2.定义父类变量,用子类对象初始化父类变量,如:
Employee ema=new SE("210","Ema",33);