abstract class Geometry
{
public string Color {get; set;}
}
class Ring : Geometry
{
public double Radius {get; set;}
}
class Triangle : Geometry
{
}
class Square : Geometry
{
}
我只想將屬性半徑添加到環類,但如果我希望環的實體可以訪問 Main 中的 Radius 屬性,我也必須在幾何類中宣告半徑,然后三角形和正方形的 Main 實體也可以訪問半徑 -我不想要的。
方法也是一樣
我在 Main 中宣告類是這樣的:
Geometry ring1 = new Ring();
Geometry triangle1 = new Triangle();
Geometry square1 = new Square();
我知道它適用于 Ring ring1 = new Ring(); 但是如果我想像這樣宣告它呢: Geometry ring1 = new Ring(); 把所有東西都放在一個幾何物件陣列中?
uj5u.com熱心網友回復:
如果您將所有內容都放在一個型別的陣列中,則Geometry您不想訪問半徑。您想將所有物件作為 a 處理,Geometry并且由于該類未實作半徑,因此不進行強制轉換是不可見的。
當您擁有跨越所有類的方法或屬性時,這會變得很有趣,例如用于計算形狀面積的方法。他們每個人都可以有自己的實作,圓依賴于半徑,而四邊形使用邊的長度。
畢竟你創建了一個形狀陣列,因為它們有一些你想要使用的共同點。
uj5u.com熱心網友回復:
也許你應該閱讀更多關于繼承和多型的內容。
您可以通過轉換通過基類訪問派生屬性,例如:
Geometry ring= new Ring();
var radius = (ring as Ring).Radius;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/400018.html
標籤:C#
上一篇:從字串中洗掉特定字符
