我一直對多態性有點警惕,但仍然不認爲我最充分地理解了這個概念。多態/類型投射使用
我瞭解多態,因爲對象可以有多種形式。所以一個對象可以是一種形式,然後是另一種形式?
Mammal (base class) cat (subclass of mammal) supercat (subclass of cat)
Cat newCat = new Cat();
現在我想貓是supercat,這是 「多態」?
SuperCat supCat = (SuperCat)newCat;
這不就像鑄造嗎?你想什麼時候使用鑄造?上面的代碼行是否有效?所以newCat被轉換爲Supercat,它是否給newCat更多的內存分配?然後將其複製到supCat?
注 - 多態是使用接口嗎?
對不起,您的多態性的理解偏了。多態性只是不同類型分享某些行爲的一種方式,而其他行爲則不同。如果你想將任何`Cat`轉換成`SuperCat`,你必須自己編寫這些代碼。 – mquander 2011-01-07 06:00:33