【问题标题】:C# Nested Classes and InheritanceC# 嵌套类和继承
【发布时间】:2013-05-04 17:29:15
【问题描述】:

只需要一些关于嵌套类和继承的帮助..

namespace blah
{
    private abstract class InheritedSomething
    {
        public void doSomething() {};
    }

    class OtherClass : InheritedSomething
    {
        //Stuff

        class NestedClass : InheritedSomething
        {
            //Stuff
        }
    }
}

这是正确的做事方式吗? NestedClass 继承 InerhitedSomething 而它的父类已经继承了它,这似乎有点多余......但是当我从 NestedClass 删除继承时,它要求我将 doSomething() 设为静态方法。

所以我的问题是,哪种方式是“正确的” - OtherClassNestedClass 都继承 InheritedSomething 或仅 OtherClass 继承 InheritedSomethingdoSomething() 成为 public static void

谢谢!

【问题讨论】:

  • 应该 doSomething 在两个类中具有相同的实现吗?或者,OtherClass 和 NestedClass 中的 doSomething 有什么不同?

标签: c# inheritance encapsulation nested-class access-modifiers


【解决方案1】:

正确与否取决于您打算做什么。

内部类型对封闭类型成员具有特权访问权限,但不派生自它。

你对这些课程的意图是什么?

【讨论】:

    【解决方案2】:

    这个设计没有错。

    可以将方法设为静态的建议是一个完全独立的问题。请注意,可以并不意味着它应该。 (阅读有关决定 herehere 的更多信息)。当您删除继承时,doSomething 不再覆盖,这使得它有资格检查此建议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-19
      • 2017-06-22
      相关资源
      最近更新 更多