我剛剛在 C# 中學習了繼承和多型性,我對這 3 種情況感到困惑。當我們有基類和派生類時,您可以創建一個實體。
你能解釋一下區別嗎(特別是 Obj1 和 Obj2)?
class Program
{
static void Main()
{
Shape obj1 = new Shape();
Shape obj2 = new Rectangle();
Rectangle obj3 = new Rectangle();
}
}
class Shape
{
public string Property1 { get; set; }
public string Property2 { get; set; }
}
class Rectangle : Shape
{
public string Property3 { get; set; }
}
uj5u.com熱心網友回復:
Shape obj1 = new Shape();
obj1 是一個形狀。它有 Property1 和 Property2。它沒有 Property3。
Shape obj2 = new Rectangle();
obj2 是一個在你實體化它的那一刻Rectangle就被貶低的Shape。如果Rectangle覆寫任何Shape行為(在您的示例中沒有),則將Rectangle在運行時呼叫這些行為,而不是基Shape類的行為。它有一個Property3可以在其內部使用的,但是您無法通過此方法訪問它,因為它已經向下轉換為Shape.
Rectangle obj3 = new Rectangle();
obj3 是Rectangle. 您可以通過Property3此方法訪問。您可以將它傳遞給任何需要 Shape 的方法,因為 aRectangle是 a Shape。
我建議您沿著這些方向撰寫更多代碼,并在一個簡單的控制臺應用程式中對其進行除錯,以查看在不同情況下會發生什么。就我個人而言,我發現邊做邊學是最好的方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/362833.html
下一篇:Laravel父類屬性繼承問題
