c#进阶(四):面向对象之多态

一、多态之虚方法语法

1.多态的简介

面向对象有三大方法: 封装,继承,多态;
c#中提现多态的 三种方式: 虚方法,抽象类,接口;
解释: 在继承的前提下,实例化出不同的对象,这些对象调用相同的方法,但是却表现出不同的行为。

2.虚方法语法

父类:
public virtual 返回值类型 方法名(){
方法体代码;
}
子类:
public override 返回值类型 方法名(){
方法体代码;
}

二、多态之里氏转换原则

1.面向对象六大原则

①单一职责原则
②开闭原则
里氏转换原则
④依赖倒置原则
⑤接口隔离原则
⑥迪米特原则

2.里氏转换原则

①在新建对象中,不仅可以在子类中new个对象(Cat c = new Cat()),也可以用父类型去new一个(Cattype c = new Cat())
②子类对象可以调用父类成员,父类对象不能调用子类成员
③如果父类对象中装的是子类对象,可以将父类对象转换为子类对象

3.is和as关键字(对象之间的比较)

is:如果为真返回true ,如果为假返回false
as: 转换成功则返回对应的对象,否则为null

三、多态之抽象类语法

1.抽象方法

之前我们学过虚方法(virtual)并且可以用子类函数(override)去重写虚方法。虚方法里面是有方法体的,意思是可以在虚方法里面编写代码。所以抽象方法就是在虚方法的基础上不能编写代码的方法

2.抽象方法的语法

在声明之前添加abstract,且没有方法体。例如 public abstract void name();
注意: 有些是需要在class前面添加abstract的。

3.抽象类的注意事项

①抽象类中不一定有抽象方法,但是抽象方法必须在抽象类里面
抽象类不能被实例化

4.虚方法与抽象方法的区别

虚方法(virtual): 他在父类定义好之后,必须要写方法体,并且子类可以重写也可以不重写,编码比较自由
抽象方法(abstract): 在定义之后,不用写方法体,子类必须要重写才能运行,在开发过程中更加有规范

四、多态之接口语法

1.接口的语法要求

①使用Interface 关键字定义而不是用class 关键字,接口名以I 开头
②接口中不能包含字段但是可以有属性
③接口中的方法不能有方法体,全是抽象方法,但是不需要用abstract 修饰
④接口中成员不能添加访问修饰符,public ,private等。默认都是public

2.接口的注意事项

①接口中所有方法都是抽象方法,所以接口不能被实例化
②一个类可以实现多个接口
③一个接口可以继承多个接口,而类只能继承一个父类

3.接口的使用场景

当某一个子类拥有一些特殊的功能的时候,不适用于写在父类中时,就可以编写接口来进行实现

五、多态之虚方法抽象类接口对比

1.语法格式对比

c#进阶(四):面向对象之多态_第1张图片

2.使用场景对比

虚方法: 父类中的各别方法要用虚方法实现
抽象方法: 规范父类中的需要重写的方法,意思是每一个抽象方法必须要规范的拥有重写方法
接口: 是一种功能的扩展形式

你可能感兴趣的:(c#,基础知识,c#,开发语言)