一、什么是方法重写?
答:是实现多态的其中方式之一
二、方法重写有什么用?
答:为了有选择性复用,解决父类不能调用子类方法的问题,使得父类中的抽象方法在子类中可以重写,也可以是为了满足子类对该方法的不同需求
三、重写的三种方法
虚方法重写
重写方法重写
抽象方法重写
四、用C#实现虚方法重写
第一步:在父类中定义虚方法 (用virtual修饰)
第二步:在子类中定义重写方法(用override修饰)
注意:重写的方法必须要和父类同名同参同返回类型,且必须要用override修饰
五、用C#实现重写方法的重写
用override修饰的重写方法,还可以在其子类继续重写(除非被sealed所修饰)
注意:若用Preson a =new Driver , 这时会调用Driver中的方法
六、方法重写中涉及的修饰关键字
abstract修饰的方法,在子类中必须重写(除非子类是抽象类)
virtual修饰的方法可以选择重写
overrider 修饰的方法 表示被重写,但还是可以在子类继续重写(除非被sealed修饰)
sealed 必须在override前边,表示封闭方法,不能再被重写(重写方法才可以被封闭)
同时也可以修饰类,成为封闭类,表示不能被继承(不能有子类),但可以实例化
七、重写方法的特点
父类可以调用子类方法,即当我们将 子类 向上转换为父类时,将使用 子类 的方法。(父new子调子)
八、总结
方法重写比方法隐藏更实用,但方法隐藏效率略高,且方法重写不止这一点用处,后面会简单介绍抽象方法重写