关于继承和构造函数

时间:2012-06-06 06:19:15

标签: c#

我只是想知道这些代码是否正确,我在一些信息中找到了。我觉得奇怪的是,在这两个例子中,直径都被使用了两次,这是否真的正确?

public Ellipse(double diameter): base(diameter, diameter)

4 个答案:

答案 0 :(得分:2)

这是Ellipse类的构造函数,它调用具有两个参数的基类构造函数。

看起来像这样:

class Shape
{
 public Shape(double diameter1, double diameter2)
 {
 }
}
class Ellipse : Shape
{
 public Ellipse(double diameter) : base(diameter, diameter)
 {
 }
}

如果你new Ellipse(10); 10传递给Ellipse构造函数,它构造函数调用Shape构造函数并传递10作为这两个参数的参数。

答案 1 :(得分:2)

语法正确。这些类可能看起来像这样:

public class Base
{
  public Base(double d1, double d2)
  {
  }
}

public Eclipse : Base
{
   public Ellipse(double diameter)
        : base(diameter, diameter)
   {
   }
}

答案 2 :(得分:1)

这取决于基类构造函数对参数的作用,但从语法上讲,它是正确的。

您发布的代码调用与提供的参数匹配的基类构造函数,而不是默认的基类构造函数(如果有)。

答案 3 :(得分:1)

这是构造函数链接,即在子构造函数之前调用基础构造函数。

如果基类有像

这样的构造函数
public Base(double, double)
然后它完全没问题。