C# 方法重写

为什么需要重写

为了选择性复用,解决父类所定义方法在子类中不适用(虚方法),或父类没有实现(抽象方法),这样的方法子类可以重写。

方法重写有三种重写的方法

  1. 虚方法重写
  2. 重写方法重写
  3. 抽象方法重写

abstract 方法:在子类必须重,除非子类也是抽象类

virtual 方法:在子类可以重写,父类方法的做法与子类不同

override方法:已经重写过的方法,在子类还可以继续重写,除非被标识为sealed

                       方法重写时必须在方法前加override关键

sealed(密封)的作用 

  1. 放在类前封闭类,指示任何类都不可继承当前类

封闭类定义sealed修饰的类

封闭特点:不能被继承。不能有子类可以实例化!

   2.  放在重写方法前封闭方法,指示当前类的子类,不能再次重写该成员,sealed 用在方法前边,必须和override 在一起。sealed override 修饰的方法 叫封闭方法,只有重写方法才可以封闭

一、虚方法重写

1.1 什么是虚方法

          定义【语法】:用vritual关键修饰的已经实现的方法,即是虚方法 

          语义【含义】:虚方法表示一个可以在子类中重写的方法  【重写不重写都可以

1.2  虚方法重写 

  虚方法重写是多态实现的一种方式;

【步骤1:】父类中定义虚方法

【步骤2:】子类中定义重写方法

【重写方法定义:和父类中的方法名相同参数相同方法返回类型相同要加override】

下面是利用虚方法重写 计算圆、三角形、矩形的面积:

调用:

二、抽象方法重写

       具体抽象方法讲解https://blog.csdn.net/qq_40229737/article/details/104009527

补充:

      依赖倒置 倒转也可以说( 依赖抽象)原则

      客户端代码尽量依赖抽象的组件,因为抽象的是稳定的。实现是多变的。

      分析需求中的名词  具体来说(多变):狗 猫  ;然后【泛化】角色 抽象(稳定)

       代码实现:定义 实现父类 抽象 【特化】实现子类 具体

       调用:依赖抽象意思是说:优先选择父来完成,父不定才找子!!

 

                         

发布了152 篇原创文章 · 获赞 24 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_40229737/article/details/104007299