【问题标题】:A virtual method of a parent class has its own implementation body block?父类的虚方法有自己的实现体块?
【发布时间】:2017-04-22 21:11:38
【问题描述】:

C#编程语言问题。

问题:“父类的虚方法有自己的实现体块”。 我的回答:“假”。

我的答案正确吗?如果不是,请解释一下,伙计们。

【问题讨论】:

  • 它可以有自己的实现,但你可以覆盖它
  • 请阅读帮助中心。 stackoverflow.com/help
  • 为什么不做一些研究并查看 c# 规范?具体来说,第 1.6.6.4 节
  • 唯一没有实现的方法是abstract

标签: c# virtual-functions


【解决方案1】:

不,在一般情况下,您的答案是不正确的。

在c#中有两种(*)方式来声明一个虚方法:

virtual Foo Method1()

或者

abstract Foo Method2()

在第一种情况下,方法必须有自己的实现主体块(或自己的表达式主体函数成员)。在第二种情况下,它是相反的,它是强制性的。前者可能在派生类中被覆盖,后者必须在非抽象派生类中被覆盖。最后但同样重要的是,绝大多数虚方法都是前一种形式。

(*) 纯粹主义者可能会争辩说接口成员也是虚拟方法(确切地说是虚拟最终方法),但我会忽略这个问题,因为它不会改变答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-12
    • 2018-06-02
    • 2014-03-28
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    相关资源
    最近更新 更多