[英]How to Cast Parent Class to Child Class
我有一個問題,當我用某些條件聲明父類時,如何將父類轉換為子類或返回子類
例如:我有參數 side = 4 ,那么當我聲明新的多邊形時,是否有可能通過父類將矩形返回給我?
另外我怎么知道返回是矩形還是三角形? 有可能這樣做嗎?
代碼如下:
Public Class Polygon
{
public Polygon(int side)
{
.....
}
}
Public Class Rectangle : Polygon
{
}
Public Class Triangle : Polygon
{
}
Polygon Shape = new Polygon(3);
var t = Shape.GetChildClass();
是的。 使用靜態工廠方法來創建子類。
// For educational purposes only!!!
public class Polygon
{
public static Polygon Create(int sides)
{
switch (sides)
{
case 3:
return new Triangle();
// ...
default:
throw new ArgumentOutOfRangeException(/*...*/);
}
}
}
var shape = Polygon.Create(3);
var isTriangle = shape is Triangle;
也就是說,沿着這條路走下去會帶來很多麻煩......
當然,多邊形將具有其邊長或等價物的序列。 即使這還不夠,因為菱形可能不是矩形。 加入 Square、Diamond、RegularPolygon 等,你就會一團糟。 最好只擁有一個包含 IsTriangle、IsRectangle 等方法的 Polygon 類。 您可能還需要 IsCongruent 和其他比較。 在一堂課上做要簡單得多。
嘗試制作如下功能:
public bool IsTriangle()
{
...
}
然后,
if(Shape.IsTriangle())
{
Triangle t=new Triangle(Shape);
...
}
基本上,您需要確定多邊形內形狀的子類類型並設置子類的不同成員。 這可能是一團糟。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.