c#不是虚方法的方法能用ovreride重写吗
答案:2 悬赏:0 手机版
解决时间 2021-02-18 16:03
- 提问者网友:送舟行
- 2021-02-17 20:04
c#不是虚方法的方法能用ovreride重写吗
最佳答案
- 五星知识达人网友:山君与见山
- 2021-02-17 20:51
显然不是嘛,虚拟或抽象方法才能重写
仔细看看:
-------------------------------------
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 的。
仔细看看:
-------------------------------------
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 的。
全部回答
- 1楼网友:人類模型
- 2021-02-17 21:13
对于抽象方法和虚方法是重写,对于其他类型的方法是覆盖。
不过重写使用的关键字是override,覆盖的关键字也是override。在使用者看来都是子类使用了和基类不同的逻辑代码来实现了同样签名的方法。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯