C#多态的相关内容
多态
让一个对象能够表现出多种状态
实现多态的三种手段
-
- 虚方法
- 抽象类
- 接口
虚方法
被Virtual修饰的方法叫做虚方法,虚方法在子类里面可以被重写
重写:子类继承父类后对父类里面的虚方法重新实现
虚方法在子类里面可以重写也可以不重写
抽象类
抽象类和抽象方法由abstract修饰
注意:
抽象方法没有方法体
抽象成员只能存在抽象类中
抽象类可以有非抽象成员
抽象类的派生类必须实现抽象方法体
抽象类只能用作基类,无法实例化
接口
-
- Interface关键字,接口中可以有属性、方法(未实现)
- 接口的名称通常以I开头
- 接口通常代表一种能力
- 如果一个类继承了类又实现了接口,那么类必须写在前面。
- 一个类只能继承一个父类,但可以实现多个接口
- 接口中的成员不能有任何访问修饰符,默认是public,如果手动添加就会报错
- 接口中的成员不能有任何实现,就像抽象方法一样
- 接口不能被实例化
接口和类的区别
不同点
-
- 不能直接实例化接口
- 接口不包含方法的实现
- 接口可以多继承,类只能单继承
相同点
-
- 接口、类和结构都可以从多个接口继承
- 接口类似于抽象基类:继承接口的任何抽象类型都必须实现接口的所有成员
- 接口和类都可以包含事件、索引器、方法和属性