抽象类虚拟类的关系和密封类
虚拟方法和抽象方法都可以供派生类重写和都用override重写。那么它们之间有什么区别呢?
1.抽象方法使用abstract关键字,虚拟方法使用virtual关键字
2.抽象方法是可以看成是没有实现体的虚拟方法
3.虚拟方法与多态性关系密切,虚拟方法为子类提供了重写该方法的选项允许子类完全或部分重写该类的方法,必须写方法体。
4.抽象方法只是一个定义,没有提供实现部分,也就是没有{},也不要在里面写内容,需要在子类中实现,抽象方法是一种强制子类重写的方法,否则子类将不能被实例化。
5.抽象方法必须在派生类中重写,这一点跟接口类似,虚拟方法不必。
6.抽象方法不能声明方法体,而虚拟方法可以。
7.抽象类不能被实例化(不可以new),只能实例化实现了全部抽象方法的派生类;而包含虚方法的类可以实例化。
8.虚拟方法是指能被重载覆盖的方法,而抽象方法是虚拟方法中的特例,指完全没有具体实现的虚拟方法.
9.如果类中包含抽象方法,那么类就必须定义为抽象类,不论是否还包含其它一般方法
10.抽象方法是必须被派生类覆写的方法,调用虚拟方法,运行时将确定调用对象是什么类的实例,并调用适当的覆写的方法
11.一个虚拟方法的实现可以由派生类取代。取代所继承的虚拟方法的实现的过程称为重写该方法;在一个虚拟方法调用中,该调用所涉及的那个实例的运行时类型确定了要被调用的究竟是该方法的哪一个实现。
12.抽象方法是需要子类去实现的.虚方法,是已经实现了,子类可以去覆盖,也可以不覆盖取决于需求.
————————————————
原文链接:https://blog.csdn.net/XVJINHUA954/article/details/106791595
密封类(sealed)
写法:sealed class 类名 方法名写到权限修饰符后即可
对于类,表示不能继承该类
对于方法,表示不能重写该方法