我只是想知道如果這段代碼是正確的,我發現在一些信息。我覺得奇怪的是,這兩個例子都使用了兩次直徑,這真的是正確的嗎?關於繼承和構造函數
public Ellipse(double diameter): base(diameter, diameter)
我只是想知道如果這段代碼是正確的,我發現在一些信息。我覺得奇怪的是,這兩個例子都使用了兩次直徑,這真的是正確的嗎?關於繼承和構造函數
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傳遞到橢圓形構造,它調用Shape
類的構造函數,並傳遞10作爲論據,這兩個PARAMS。
這取決於基類構造函數對參數做了什麼,但在語法上,它是正確的。
您發佈的代碼調用與提供的參數(而不是默認的基類構造函數)匹配的基類構造函數(如果有的話)。
這是構造函數鏈,即在子構造函數之前調用基構造函數。
如果基類有像
public Base(double, double)
構造則是完全沒有問題。
爲什麼你覺得它很奇怪?什麼是基類? – leppie
大概它只是說「一個默認的橢圓是一個圓圈」 - 我猜是有第二個構造函數需要兩個參數。 –
爲什麼downvote我qustion?我只是覺得奇怪的是,有兩個'直徑',我想到的不是兩個同名的公共字段,但現在當我看到你的代碼時,它更好地理解它,並且可以有一個'直徑'兩次。 –