virtual和abstract关键字

简介: virtual和abstract关键字

virtual


1.类中定义的虚方法(虚方法就是virtual修饰的方法)除了辅助实现多态特性,其实它和普通函数没什么区别。基类声明或基类定义(即实现)的虚方法,其派生类可以重写也可不重写;如果派生类不重写基类虚方法,那么派生类实例访问的虚方法是基类中定义的方法


2.在基类中定义了虚方法,并且在派生类中使用override重写了该方法(C++中使用virtual关键字表示要重写虚方法),那么派生类的实例调用中,该虚方法使用的是派生类中重写的方法。


abstract


C#中abstract关键字只能用在抽象类中修饰方法,并且没有具体的实现。抽象方法的实现必须在派生类中使用override关键字来实现。抽象类和C#中的接口interface有着很重要的异同点,这里不再赘述。


总结


  1. 1.virtual方法在基类中可以实现(若未实现,子类必须为其实现),abstract方法在基类中不可实现;而在派生类中,virtual方法可重写可不重写,abstract方法必须重写。

  2. 2.抽象类不可创建实例,只能被继承,由派生类来实例化。


  1. 3.C#中有函数被声明为abstract,那么必须显式使用用abstract修饰类名。

  2. 4.C#中派生类重写基类的virtual或abstract方法,记得使用override修饰;C++中派生类重写基类的virtual方法,使用virtual修饰。
相关文章
|
11天前
|
编译器 C++ 开发者
深入理解virtual关键字
本文从需求、派生类等维度解析了virtual关键字的类,以及介绍了virtual类的使用场景和具体用法。
|
2月前
|
C# 索引
C#学习相关系列之abstract和virtual用法
C#学习相关系列之abstract和virtual用法
|
9月前
|
Java
关键字abstract
关键字abstract
39 0
static类为什么不能用sealed关键字修饰
今天在写代码时,顺手把一个static 类前面加上sealed关键字,结果编译时报错:” 类不能既是静态的又是密封的“。很是纳闷,sealed字段修饰类不是代表该类不能被继承吗,于是我去掉sealed关键字,生成一个dll。
880 0