关于继承和构造函数
本文关键字:构造函数 继承 于继承 | 更新日期: 2023-09-27 18:36:25
我只是想知道我在某些信息中找到的这段代码是否正确。我觉得奇怪的是,在两个例子中,直径都使用了两次,这真的正确吗?
public Ellipse(double diameter): base(diameter, diameter)
语法正确。这些类可能如下所示:
public class Base
{
public Base(double d1, double d2)
{
}
}
public Eclipse : Base
{
public Ellipse(double diameter)
: base(diameter, diameter)
{
}
}
这是一个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 作为这两个参数的参数传递。
这是
构造函数链接,即在子构造函数之前调用基构造函数。
如果基类具有类似构造函数
public Base(double, double)
那么它完全没问题。
这取决于基类构造函数如何处理参数,但从语法上讲,它是正确的。
您发布的代码调用与提供的参数匹配的基类构造函数,而不是默认的基类构造函数(如果有)。