C# 嵌套类和继承

Posted

技术标签:

【中文标题】C# 嵌套类和继承【英文标题】:C# Nested Classes and Inheritance 【发布时间】: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 有什么不同? 【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

这个设计没有错。

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

【讨论】:

以上是关于C# 嵌套类和继承的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin基础(十三) 嵌套类内部类和匿名内部类

C#中私有类的概念

java嵌套类和内部类详解

Kotlin基础(十三) 嵌套类内部类和匿名内部类

深入kotlin - 嵌套类和内部类

深入kotlin - 嵌套类和内部类