- 继承的作用:
- 继承可以减少代码的冗余,提高代码的复用性。
- 是面向对象编程的组成部分,是所有面向对象的语言都要具备的特性。
- 继承的实现:
- 先将几个类中相同的属性和方法进行抽离,单独定义在一个新建的类中。
- 其他的类直接继承当前新建的类,语法是SE:Employee,冒号(:)表示继承关系,冒号前是子类,冒号之后的是父类
- 子类可以直接使用父类中的属性和方法。
- 可以使用base关键字直接访问父类的属性和方法(成员变量)
- C#的访问限制符(访问修饰符)
Public | Protected | private |
公共的 | 受保护的 | 私有的 |
可以在当前项目的任何地方使用 | 只能在当前类和当前类的子类(派生类)中使用 | 只能在当前的类使用 |
- Base关键字的使用:
一般用于子类的构造函数中:
1.如果子类编写构造函数没有使用base,则默认调用的是父类的隐含的不带参数的构造方法。 |
2.如果子类中使用了base,则是要显示的调用父类中相对应的构造函数,因为构造函数可以重载。 |
3.在调用过程中,要保证父类中拥有此参数列表的构造函数,并且参数的名称要保持一致,参数不需要带数据类型。 |
- 继承的特性:
传递性 | 单根性 |
一个子类可以继续被其他类继承,父类中的成员可以被所有的派生类使用 | 一个类只能有一个父类 |
- Is a的使用
一般用于循环遍历中,判断某个父类是否能转换为某个子类对象。语法:父类在前,子类在后,比如:item is PM;
- 虚方法:
1.虚方法的作用是完成C#中方法的重写操作。 |
2.虚方法的语法:在普通方法的访问修饰符之后加virtual |
3.虚方法一般是用于被子类所重写,如果子类没有重写当前的虚方法,那么调用时候是当前父类的虚方法,否则是调用子类重写之后的方法(子类的方法优先被调用————子类优先原则) |
4.在集合中遍历操作时,不需要在做if判断,直接使用重写之后的方法即可,多态的特性会自动识别要调用的是哪一个子类中的方法。 |
- 方法的重写:
1.方法的重写是面向对象编程中多态的重要体现 |
2.重写的关键字是override,注意:子类中重写父类的方法只能是虚方法和抽象方法 |
3.调用的原则:子类优先 |
- 比较方法重载和方法重写的区别:
重载overload | 重写(覆盖)override |
发生在一个类中 | 发生在继承关系的子类中 |
方法名称相同,参数列表不同(类型,个数,顺序) | 子类和父类的方法名称相同,参数也相同,方法体不一样 |