使类继承构造函数的最简单方法(C#)

时间:2009-06-06 01:13:04

标签: c# inheritance constructor

是的,抱歉问一个愚蠢的n00b问题。所以我有一个C#程序。我有一个班级

class foo
{

    public int bar, wee, someotherint, someyetanotherint;

    public foo()
    {
         this.bar = 1:
         this.wee = 12;
         this.someotherint = 1231;
         this.someyetanotherint = 443;
    }
}

我想创建一个名为spleen的类,它继承自foo

class spleen : foo
{

}

使脾类继承foo的构造函数而不必从foo复制/粘贴整个构造函数的最快,最简单的语法是什么?我不想听到我已经有太多参数了。我已经知道了。 (编辑:实际上,不。我是个白痴)我知道我应该以某种方式调用父构造函数,但我不知道如何。我该怎么做。

编辑:我现在意识到我应该花更多的时间来写我的问题。看起来我试图在没有意识到的情况下同时提出两个问题(如何继承没有参数的构造函数,以及如何继承带参数的构造函数),并以某种方式混淆了它。然而,提供的答案非常有帮助,并解决了我的问题。谢谢,抱歉这样的白痴!

4 个答案:

答案 0 :(得分:19)

您要找的是base关键字。您可以使用它来调用基础构造函数并提供必要的参数。

尝试以下方法。由于缺乏更好的选择,我选择了0作为默认值

class spleen : foo { 
  public spleen() : base(0,0,0,0)
  {
  }
}

编辑

根据您的新版本代码,调用构造函数的最简单方法是完全没有做任何事情。为脾生成的默认构造函数将自动调用foo的基本空构造函数。

class spleen : foo { 
  public spleen() {}
}

答案 1 :(得分:7)

您只需创建它,然后调用基础构造函数:

public spleen(int bar, int wee, int someotherint, int someyetanotherint)
    : base(bar,wee,someotherint,someyetanotherint)
{
    // Do any spleen specific stuff here
}

答案 2 :(得分:5)

JaredPar是对的,但遗漏了一些东西,我没有足够的代表来编辑它。

class spleen : foo 
{
     public spleen() : base()
}

如果你的父类接受了构造函数中的参数,那么它将是

class foo
{

     public int bar, wee, someotherint, someyetanotherint;

     public foo(int bar, int wee, int someotherint, int someyetanotherint)
     {
           this.bar = bar;
           this.wee = wee;
           this.someotherint = someotherint;
           this.someyetanotherint = someyetanotherint;

     }
}

class spleen : foo 
{
     public spleen(int bar, 
                   int wee, 
                   int someotherint, 
                   int someyetanotherint) : base(bar, 
                                                 wee, 
                                                 someotherint,  
                                                 someyetanotherint)
}

答案 3 :(得分:-3)

使构造函数受到保护:

protected Operator(String s, int i, boolean flag){
    operator = s;
    precedenceLevel = i;
    associative = flag;
}

//东西

class MulOperator extends Operator {
protected MulOperator(String s, int precedenceLevel, boolean flag) {
    super(s, precedenceLevel, flag);
}

等等等等

编辑:假设他们有相同/相似的构造函数......