提出同樣問題的另一種方法是,給定2個A和B類,說「對象A可以投入到B中」和「對象A是B的後代」是同義詞嗎?Java - 你可以將一個對象轉換成它沒有擴展的類嗎?
感謝,
JDelage
編輯:澄清的問題,以更清楚地表明A和B都是類。
提出同樣問題的另一種方法是,給定2個A和B類,說「對象A可以投入到B中」和「對象A是B的後代」是同義詞嗎?Java - 你可以將一個對象轉換成它沒有擴展的類嗎?
感謝,
JDelage
編輯:澄清的問題,以更清楚地表明A和B都是類。
「Java - 你可以將一個對象轉換成它沒有擴展的類嗎?」 - 不,你不能。
「」基本上,它是同義的說:「對象A可以投入B」和「對象A是B的直接後裔」?「 - 是的。另外的情況下,當A是一類實現接口B.的
太好了,謝謝。 – JDelage 2010-12-16 10:18:30
不,你不能。它拋出一個ClassCastException。
是的,你可以,如果B接口和A是實現B的
公平 - 我的意思是作爲一個單獨的班級,但我的問題沒有指定它。魔鬼,細節和所有......感謝你的教訓。 – JDelage 2010-12-16 10:16:02
假設您有:
interface I {}
class A implements I {}
class B extends A {}
class C extends B {}
所有的以下是有效的:
(I)C;
(A)C;
(B)C;
如果不是嫡系或沒有接口的實現
class A;
class B extends A;
A a = new B();
interface A;
class B implements A;
(A) B
在其他情況下
它會拋出ClassCastException異常http://download.oracle.com/javase/1.4.2/docs/api/java/lang/ClassCastException.html
試試看? – 2010-12-16 10:09:13
「直系後代」是什麼意思?如果你的意思是類A明確地擴展了B,那麼就沒有必要。 A可以擴展C和C可以擴展B,並且仍然可以將A賦予B. – 2010-12-16 10:12:07
@Sergey - 是的,這就是我的意思是直接後裔。 – JDelage 2010-12-16 10:14:13