【C#】面向对象多态02---方法重写

一、什么是方法重写?

答:是实现多态的其中方式之一

二、方法重写有什么用?

答:为了有选择性复用,解决父类不能调用子类方法的问题,使得父类中的抽象方法在子类中可以重写,也可以是为了满足子类对该方法的不同需求

三、重写的三种方法

  1. 虚方法重写

  1. 重写方法重写

  1. 抽象方法重写

四、用C#实现虚方法重写

第一步:在父类中定义虚方法 (用virtual修饰)

第二步:在子类中定义重写方法(用override修饰)

a : 父类编写虚方法,用virtual修饰

b : 子类重写方法,用override修饰

e :在main函数中声明父类调用子类方法

在main函数中的调试结果

扫描二维码关注公众号,回复: 15236967 查看本文章

注意:重写的方法必须要和父类同名同参同返回类型,且必须要用override修饰

五、用C#实现重写方法的重写

用override修饰的重写方法,还可以在其子类继续重写(除非被sealed所修饰)

d : 再次继承,并重写,同时用sealed修饰表示不可再重写

注意:若用Preson a =new Driver , 这时会调用Driver中的方法

六、方法重写中涉及的修饰关键字

  1. abstract修饰的方法,在子类中必须重写(除非子类是抽象类)

  1. virtual修饰的方法可以选择重写

  1. overrider 修饰的方法 表示被重写,但还是可以在子类继续重写(除非被sealed修饰)

  1. sealed 必须在override前边,表示封闭方法,不能再被重写(重写方法才可以被封闭)

同时也可以修饰类,成为封闭类,表示不能被继承(不能有子类),但可以实例化

七、重写方法的特点

父类可以调用子类方法,即当我们将 子类 向上转换为父类时,将使用 子类 的方法。(父new子调子)

八、总结

方法重写比方法隐藏更实用,但方法隐藏效率略高,且方法重写不止这一点用处,后面会简单介绍抽象方法重写

猜你喜欢

转载自blog.csdn.net/ICD_kfg/article/details/129192723