但是却表现出不同的行为

时间:2022-03-17 07:30:37

C#面向东西(一):明确几个简单的观点作为开胃菜

C#面向东西(二):封装和担任

今天来聊聊面向东西的多态,这部分算是对照重要和核心的,很多事情2年多的措施员其实对付面向东西和多态的理解也是不到位的,此次好好总结下,理顺思路。

三、多态:

  有多态之前必需要有担任,只有多个类同时担任了同一个类,才有多态这样的说法。

  在担任关系的前提下,实例化出差此外东西,这些东西挪用不异的要领,但是却表示出差此外行为,这就叫做多态。

  在 C#语言中浮现多态有三种方法:虚要领,抽象类, 接口

1、虚要领语法

1.1什么是虚要领?

在父类中使用 virtual 关键字修饰的要领, 就是虚要领。在子类中可以使用 override 关键字对该虚要领进行重写。

Virtual要领也可以单独执行。

1.2虚要领语法

父类:

public virtual 返回值类型 要领名()

{

要领体代码;

}

子类:

public override 返回值类型 要领名()

{

要领体代码;

}

例:老虎和猫担任同一个父类,实现“ 叫”虚要领

class CatType { public virtual void Cry() { Console.WriteLine("深呼吸,张开嘴巴,开始:"); } }

class Cat:CatType { public override void Cry() { base.Cry(); Console.WriteLine("喵喵喵"); } }

class Tiger:CatType { public override void Cry() { base.Cry(); Console.WriteLine("咆哮"); } }

1.3.虚要领使用细节

①将父类的要领符号为虚要领, 就是在父类要领的返回值前加 virtual 关键字,暗示这个要领可以被子类重写。

②子类重写父类要领, 在子类的要领的返回值前加 override 关键字。

③父类中的虚要领, 子类可以重写, 也可以不重写。

④父类顶用 virtual 修饰的要领, 可以用于实现该要领共有的成果(好比初始化该要领), 然后在子类重写该要领时, 使用 base 关键字挪用父类中的该要领。

2、多态之里氏转换原则 2.1面向东西六大原则

在使用面向东西思想进行措施设计开发过程中, 有六大原则需要注意, 六大原则在面向东西编程中的职位地方类似于“ 马列主义” “ 毛XX思想” “ *理论” 等,作为编程的“ 指导思想” 和“ 步履指南” 存在的。

六大原则如下:

①单一职责原则; ②开闭原则; ③里氏转换原则;

④依赖颠倒原则; ⑤接口断绝原则; ⑥迪米特原则;

这六大面向东西编程原则, 在后续中我们会一一介绍到, 本节课讲解第一个原则: 里氏转换原则!先界说一个子类,重写cry要领,增加monkey要领

class Cat:CatType { public override void Cry() { base.Cry(); Console.WriteLine("喵喵喵"); } public void Monkey() { Console.WriteLine("我是子类--Cat类"); } }

2.2何为里氏转换

①子类东西可以直接赋值给父类变量;

但是却表现出不同的行为

而且父类的变量cry要领也被重写了(override)。

②子类东西可以挪用父类中的成员, 但是父类东西永远只能挪用本身的成员;

CatType无法挪用monkey();

③如果父类东西中装的是子类东西, 可以将这个父类东西强转为子类东西;

//此刻方法.

CatType ct = new Cat();

ct.Cry();

ct.MKCODE();