我的代碼是如何實例化在此Java代碼片斷髮生
class Alpha
{
public void foo()
{
System.out.print("Alpha ");
}
}
class Beta extends Alpha
{
public void foo()
{
System.out.print("Beta ");
}
public static void main(String[]args)
{
Alpha a = new Beta();
Beta b = (Beta)a;
a.foo();
b.foo();
}
}
輸出: -
Beta Beta
我新的Java和這種實例的我所遇到的第一個時間,這就是爲什麼我不能夠理解爲什麼輸出不
Alpha Beta
如果「一」是阿爾法類的對象,然後爲什麼不調用Alpha的方法?
請幫我一把。
但是'b'實例化的行是什麼意思? – 2012-08-08 18:49:08
將這些看作是對內存中對象的引用。你實際上只創建了一個真實的對象,這發生在'new'上。當你給出'Beta b =(Beta)a'時,你得到的是一個新的'Beta'變量,指向與'a'相同的東西。所有對象變量實際上只是引用,所以如果你想要兩個不同的對象,那麼你需要明確地做到這一點。 – Carl 2012-08-08 18:53:09
所以在這種情況下'b'在'a'已經存在時實際上是沒有用的......我是對的嗎? – 2012-08-08 18:58:06