在下面的代碼:對象類型轉換
A tat = new P();
P bat = (P) tat;
的類型轉換tat
:P bat = (P) tat;
相同的話說:P tat = new P();
你能也說,在理論:P bat = (P tat = new P();)
在下面的代碼:對象類型轉換
A tat = new P();
P bat = (P) tat;
的類型轉換tat
:P bat = (P) tat;
相同的話說:P tat = new P();
你能也說,在理論:P bat = (P tat = new P();)
的答案是肯定的,但P bat = (P tat = new P();)
是無效的Java代碼,並不會合作mpile。
你將不得不使用兩個語句來定義它們:
P bat, tat;
bat = tat = new P();
或者實際上它在同一行:'P bat,tat = bat = new P();' – 2014-10-01 01:44:04
在你的榜樣,你需要記住的是,雖然tat
真是P
一個實例,它由A
定義的接口(假設P
擴展或實現A
,否則這將無法正常工作)。
接下來,bat
將引用tat
所指的同一對象,但它可通過P
定義的接口進行訪問。
是的,對不起P在我的例子中擴展A. – 2014-10-01 01:53:48
除了'tat'將特別是'P'而不是大概更通用的'A'以外,它是一樣的。 – 2014-10-01 01:41:49
在這兩種情況下,'bat'都是'P'。你不需要沮喪地把'tat'分配給'bat'。 – 2014-10-01 01:56:03