C#基础1.9 重写 重载 虚方法,抽象方法,抽象类,多态
前言
在介绍重写和重载之前首先要介绍一些基础知识即子类和父类。
子类与父类:
如果一个类A继承另一个类B,那么A类就称为B类的子类,而把B类称为A的父类。
子类继承时自动共享父类的数据结构及方法的机制,这是类与类之间的一种关系,在进行定义和实现时,可以在一个已经存在的类上进行,并将它所定义的内容占为己有,同时加上自己的特色。
那么理解了什么是子类和父类之后,有利于我们了解下面的重载和重写。
重写与重载重写(override): 子类重写父类中的方法,不管父类中包含的是虚方法还是抽象方法,子类都可以重写。
重载(overload):重载是方法的名称相同,参数或类型不同,可以进行多次重载以适应不同的需要。
重写与重载的区别:
重写是子类重写父类的方法,面向于对象。
重载则是为方法添加不同参数不同类型的内容,偏向于面向过程。
虚方法(virtual):当进行方法声明时,在前面使用virtual修饰符,我们就将其称之为虚方法,相反的话则称之非虚方法,值得注意的是当我们使用了virtual修饰符后,就不能再使用static、abstract、override修饰符。虚方法里有内容。
抽象方法(abstract):在进行面向对象编程时,抽象方法指的是只有方法声明,却没有具体方法体的方法,通常用于抽象类或接口中。
抽象类指的是一个类中没有清晰的描绘一个具体的对象,那么这个类就是抽象类,使用abstract进行修饰的类就是抽象类,抽象类并不完整因此只能用作基类,且不能实例化。
虚方法与抽象方法的不同
多态
多态是指当一个类同时表现多重不同的能力,同一操作作用于不同的对象,有不同的解释产生不同的执行结果。