多态:
同样都是继承了同一个父类,但是父类中的方法并不使用任何一个子类,那么在这就需要子类重新编写这个方法的主体
1、需要父类同意子类可以重新编写自己的方法
virtual - 虚方法
2、子类只能重写父类允许重写的方法,只能重写虚方法
override - 重写覆盖虚方法
所有的类都可以当做父类,都可以有虚方法
public class Fly { public virtual string Flying() { return "我会飞行!"; } } public class Plane : Fly { public override string Flying() { return "我喷火就能飞!"; } }
抽象类:abstract
它就是为了被继承而出现的
普通的类中所有的方法都变成虚方法,没有人用最基础的方法,全部都需要重写,那么就不需要那么费劲把普通类中的方法主体都写完,而是,直接定义成抽象类,并且都写成抽象方法。
只声明方法的名称和返回类型,具体方法主体是什么,继承过去以后自己去实现。
抽象方法一定是在抽象类中
有抽象方法的类,一定是抽象类
抽象类中不一定只有抽象方法
public abstract class Ren { public abstract string ChiFan(); public abstract string ShuiJiao(); public virtual string ShuoHua() { return "我能说话!"; } } public class NanRen : Ren { public override string ChiFan() { return "大口吃饭!"; } public override string ShuiJiao() { return "趴着睡!"; } }
接口:interface
就是让类更加完善
都是抽象方法,不能有一点实在东西,全部内容都需要在子类中进行实现