2012-04-07 35 views
1

Animal是Cat類的父類。兩個不同分配的子類別的區別

public static void main (String[] args) 
{ 
Animal myCat1 = new Cat; //Allocation 1 
Cat myCat2 = new Cat; //Allocation 2 
} 

什麼是兩種分配的diffrerence ??每一個是真實的,不是嗎?

+0

有區別!您不能在myCat1引用上調用Cat方法,因爲它聲明瞭Animal,因此只有Animal方法可用。對於myCat2,動物和貓的方法都可以稱爲 – 2012-04-07 17:14:39

回答

4

這些都不是有效的。你需要()。除此之外:

  • 通過其超
  • 第二第一referes到該實例是指它通過其類

您可以通過任何超的指向任何對象,達Object。這是多態性。

5
Animal myCat1 = new Cat(); 

這被稱爲polymorphism其中超類引用可以保持一個子類對象。

閱讀Java教程:Polymorphism

+0

我仔細閱讀了您所談論的頁面,並掌握了這些代碼。但是,代碼與多態性之間的關係是什麼??我不明白什麼是多態性?在頁面結尾處說:Java虛擬機(JVM)爲每個變量中引用的對象調用適當的方法。它不調用變量類型定義的方法。這種行爲被稱爲虛擬方法調用,並演示了Java中重要的多態特性的一個方面。我不明白這是什麼意思?你能澄清一下嗎? – oiyio 2012-04-07 18:56:47

1

要回答你的問題: 沒有什麼區別 - 在這兩種情況下,'新的Cat()'分配一個Cat類的實例。 兩者都是真實的 - myCat1是一種動物(實際上是一隻貓),myCat2是一隻貓。