【问题标题】:C# class/methods modifiersC# 类/方法修饰符
【发布时间】:2012-06-24 11:49:15
【问题描述】:

我正在尝试使用类/方法修饰符制作电子表格。电子表格本身可以位于here,尽管我有一些问题:

1) 正如我所读,方法也可以是sealed,但这样做的目的是什么?保护方法不被覆盖?

2) abstract 类中的字段是否也必须是 abstract

3) virtual 方法可以在定义的对象/类中有主体吗?

【问题讨论】:

  • 你可以试一试看看会发生什么
  • 2) 字段声明保留存储,没有机会定义或重新定义交互。覆盖发生在交互上,例如方法和属性 getter/setter。当一个属性看起来是存储时,一开始您可能不清楚您可以覆盖一个属性。如果是这样,请记住这只是 C# 的一个优点;当您声明 myProp{get;set;} 时,它会自动为您创建一个支持字段,并且会针对该字段进行交互。

标签: c# class methods modifier


【解决方案1】:

1:是的,就是这样;阻止虚方法在子类中再次被覆盖

2:字段永远不是抽象的;字段正在实施;在抽象类中必须是抽象的

3:是的,因为虚拟修饰符与抽象修饰符不同。两者都代表一个虚拟方法 - 区别在于完全基类中是否有实现

【讨论】:

    【解决方案2】:
    1. sealed 方法 prevents further overriding 沿继承链向下。 sealed 方法也需要有 override 关键字。

    2. 字段不能是abstract。字段是类级别的变量。你不能覆盖它。属性和方法可以是abstract,但不是必须的。

    3. virtualabstract 方法的区别在于虚方法有一个实现。您可以在派生类中覆盖该实现。

    【讨论】:

      【解决方案3】:
      1. 是的
      2. 不 - 没有抽象字段之类的东西,该类是抽象的,这意味着它不能被实例化,但其上定义的字段是派生非抽象类布局的一部分。
      3. 是的

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-13
        • 1970-01-01
        • 2011-04-13
        • 2012-09-08
        • 2013-02-02
        • 2014-08-27
        相关资源
        最近更新 更多