C#基础1.9 重写 重载 虚方法,抽象方法,抽象类,多态

前言

在介绍重写和重载之前首先要介绍一些基础知识即子类和父类。

子类与父类:

如果一个类A继承另一个类B,那么A类就称为B类的子类,而把B类称为A的父类。
子类继承时自动共享父类的数据结构及方法的机制,这是类与类之间的一种关系,在进行定义和实现时,可以在一个已经存在的类上进行,并将它所定义的内容占为己有,同时加上自己的特色。

那么理解了什么是子类和父类之后,有利于我们了解下面的重载和重写。

重写与重载

重写(override): 子类重写父类中的方法,不管父类中包含的是虚方法还是抽象方法,子类都可以重写。

重载(overload):重载是方法的名称相同,参数或类型不同,可以进行多次重载以适应不同的需要。

重写与重载的区别:
重写是子类重写父类的方法,面向于对象。
重载则是为方法添加不同参数不同类型的内容,偏向于面向过程。

虚方法,抽象方法,抽象类

虚方法(virtual):当进行方法声明时,在前面使用virtual修饰符,我们就将其称之为虚方法,相反的话则称之非虚方法,值得注意的是当我们使用了virtual修饰符后,就不能再使用static、abstract、override修饰符。虚方法里有内容。

抽象方法(abstract):在进行面向对象编程时,抽象方法指的是只有方法声明,却没有具体方法体的方法,通常用于抽象类或接口中。

抽象类指的是一个类中没有清晰的描绘一个具体的对象,那么这个类就是抽象类,使用abstract进行修饰的类就是抽象类,抽象类并不完整因此只能用作基类,且不能实例化。

虚方法与抽象方法的不同

C#基础1.9 重写 重载 虚方法,抽象方法,抽象类,多态

多态

多态是指当一个类同时表现多重不同的能力,同一操作作用于不同的对象,有不同的解释产生不同的执行结果。