C#子类或接口



C#非常新——我被指示创建一个子类来对基类进行变体。我以前从未上过分班,我读了一些,然后试了一下。从基类继承后,我只能从子类访问MyClass的私有属性。我在这里做了什么?这是一个真正的子类,还是某种嵌套继承的子类?

    public class MyClass
{
     private string connString;
     // exec stored procedure 1
     public class MySubClass : MyClass
     {
            otherClass o = new otherClass(connString);
            // exec stored procedure 2
     }
}

不管我做了什么,似乎都奏效了。此外,在讨论子类的主题时,有没有一种常见的命名方法?例如MyClass_SubClass或_MyClass等?

非常感谢!

编辑:再次感谢大家!我想我在这里寻找这个答案。无论如何,我意识到我误解了任务——根本不需要嵌套或继承!刚刚创建了一个单独的类似类。

您有嵌套的类,这可能是您应该避免的,直到您更好地理解C#和OOP(然后您继承,这很奇怪)。

子类或派生,通过继承实现。在您的示例中:

public class MyClass
{
     private string connString;
     // exec stored procedure 1
}
public class MySubClass : MyClass
{
      otherClass o = new otherClass(connString);
      // exec stored procedure 2
}

为了允许MySubClass访问MyClass的成员,需要将该成员标记为protected或更高级别。不能在包含类之外访问private成员。

public class MyClass
{
     protected string connString;
     // exec stored procedure 1
}

MySubClass实际上是MyClass.MySubClass。通常,普通子类不能访问私有成员。

一个普通的子类将作为一个独立的类在一个单独的文件中。如果子类应该被允许访问基类成员,那么您应该将它们声明为"受保护的"而不是"私有的"。

作为命名的主题之一,通常名称表示类型,而不考虑基类。例如,如果你有一个Animal基类,那么你有一个子类Dog和Cat是合理的。或者在Windows中,您可以有一个名为Control的基类和名为Button、TextBox、Label等的子类

您的代码是有效的,它并没有完全实现指示您实现的内容。您可以在类中声明一个类。使用您的代码,您可以实例化这两个类,如下所示。

class Program
{
    static void Main(string[] args)
    {
        MyClass myClass = new MyClass();
        MyClass.MySubClass mySubClass = new MyClass.MySubClass();
    }
}

这是非常不寻常的,在类中声明一个类并不罕见,但通常情况下,您不会将MySubClass声明为public,而是将其声明为private或protected。就像这样…

public class MyClass
{
    private string connString;
    private MyClassHelper mySubClass = new MyClassHelper();
    // exec stored procedure 1
    protected class MyClassHelper
    {
        object o = new object();
        // exec stored procedure 2
    }
}

因此MyClassHelper只存在于MyClass的范围内。我从未见过内部类继承外部类的代码,它编译得很完美,你永远不会这么做,你可以很容易地创建循环引用。

BradleyDotNET的答案告诉您如何实现MyClass的子类。这也被称为继承。在这里阅读更多关于它的信息。。。http://msdn.microsoft.com/en-us/library/ms173149(v=vs.80).aspx

作为一个警告,我不会对类继承太疯狂,类之间有很多类型的关系,相比之下,类继承是相当严格的。

问题的标题是子类或接口。接口是你应该关注和理解的东西,它们非常重要,尤其是对于实现SOLID代码。在我的代码中,类继承接口比继承类更常见。

最新更新