C#基础知识:virtual方法,abstract方法,区别

Posted 丑小样

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#基础知识:virtual方法,abstract方法,区别相关的知识,希望对你有一定的参考价值。

virtual 关键字用于修饰方法、属性、索引器或事件声明,并使它们可以在派生类中被重写。默认情况下,类中的方法是非虚的,非虚的方法不能在子类中被覆盖(override),但是可以隐藏(new),但这不影响父类方法的功能。为了达到子类以自己的方法实现某一功能的目的,需要在父类中用virtual关键字来修饰方法,这样,在其继承子类中就可以采用覆盖的方法来提供方法的多态机制。virtual关键字在类中修饰方法需要注意以下几点:

1. virtual修饰类中方法时,前面必须有public修饰符,非虚方法不能是有;

2. virtual不可以与static、abstract、private、override一起使用;但virtual和override密不可分,要在子类中覆盖基类的虚方法,就必须要用到override覆盖,以子类方法实现某一功能;

3. virtual修饰的方法必须有实现,即使该实现是一个空方法体;

4. 基类中的virtual方法可以选择在继承子类中覆盖或不覆盖,这样就存在两种情况:

      (1)若基类中定义的virtual方法在派生类中被覆盖(override),那么在对派生类实例的调用中,该方法使用的是派生类中的新方法(该新方法是在子类中通过覆盖父类中的虚方法而重新定义的方法);

     (2)若在基类中定义的virtual方法在派生类中没有被覆盖(override),那么在对派生类实例的调用中,该方法使用的是基类中定义的方法。

 

 

     abstract关键字只能用在抽象类中修饰方法,并且没有具体的实现。抽象方法的实现必须在派生类中使用override关键字来实现。

以上是关于C#基础知识:virtual方法,abstract方法,区别的主要内容,如果未能解决你的问题,请参考以下文章

c#中啥情况用abstract,啥情况下用virtual

C#中Abstract和Virtual

C#中Abstract和Virtual的区别

C#中virtual和abstract的区别

c#中virtual, abstract和override的区别和用法?

C# virtual 和 abstract 区别