C#虚方法------知识点整理

来源:互联网 发布:php中文手册 pdf 编辑:程序博客网 时间:2024/05/16 09:46

当类中的方法声明前加上virtual, 该方法称为虚方法,虚方法可以被重载。

如果对方法使用了virtual修饰符后,将不再允许有static,abstract或override修饰符对方法进行定义。

对于非虚方法,无论被其所在类的实例还是其所在类的继承类的实例调用执行方式不变。
而对于虚方法,执行方式可以被派生类改变。这种改变可以通过方法的重载来实现。

当调用虚方法时,运行时将确定调用对象是什么类的实例。同时调用适当的覆盖方法,通过override关键字来覆盖。

virtual 用在基类中,指定一个虚方法(属性),表示这个方法(属性)可以重写。

override 用在派生类中,表示对基类虚方法(属性)的重写。
以上的基类和派生类都是相对的。B 是 C 的基类,也可以是 A 的派生类,B 中既可以对 A 中的 virtual 虚方法用 override 重写,也可以指定 virtual 虚方法供 C 重写。

不能重写非虚方法或静态方法。
重写的基方法必须是 virtual、abstract 或 override 的。为什么 override 也可以重写呢?因为基类中的 override 实际上是对基类的基类进行的重写,由于继承可传递,所以也可以对基类中 override 的方法进行重写。
override 声明不能更改 virtual 方法的可访问性。override 方法和 virtual 方法必须具有相同的访问级别修饰符。
不能使用修饰符 new、static、virtual 或 abstract 来修改 override 方法。
重写属性声明必须指定与继承属性完全相同的访问修饰符、类型和名称,并且被重写的属性必须是 virtual、abstract 或 override 的。
0 0
原创粉丝点击