JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java 新手區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 Re:閒聊 -- 名稱,參考,和物件 [Re:item1394]
TAHO

可愛吧∼∼

版主

發文: 271
積分: 7
於 2004-01-07 05:28 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
item1394 wrote:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Excel
{
    public static void main(String argv[])
    {
        A a = new B();
        B b = ( B ) a;
        C c = new A();
        D d = (D) c;
     }
}
 
class A {}
class B extends A {}
class C extends B {}
class D extends A {}


嗯...我在看過上面的文章後,剛巧碰上了同樣的問題
我想在這邊發表一下看法,不知道是否正確,請大家多多指較,thx

首先
1
A a = new B();

new B()產生一個B類別物件,同時A a產生一個參考,而用"="將兩個連接起來

接著
1
B b = ( B ) a;

則是將參考轉型成B類別? 再丟給b
1
C c = new A();

由於 C extends B and B extends A
所以在此必須改成
1
C c = (C) new A();



這有很大很大的問題吧? 這邊編譯會過 可是 runtime 會錯誤
new A() 之後,物件是屬於型別 A
型別 A 的物件,無論如何都無法變成型別 C 的

item1394 wrote:
然後
1
D d = (D) c;

因為C與D之間並沒有繼承關係所以沒辦法轉型?


是的,這是編譯時期的檢查使然,實際上你的問題好像不太存在
class A 有兩個繼承的分支
要把其中一個分支的物件轉成另一個分支的物件? 怎麼想都怪怪的∼∼


browser edited on 2004-01-07 05:33
reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
23179 [精華] 閒聊 -- 名稱,參考,和物件 swanky 2672 2003-08-21 08:15
21875 閒聊 -- 名稱,參考,和物件 part II swanky 1567 2003-08-21 08:18
23364 Inner Class 介紹 swanky 1650 2003-08-21 08:23
21965 Re:閒聊 -- 名稱,參考,和物件 item1394 644 2003-10-07 20:41
21432 Re:閒聊 -- 名稱,參考,和物件 TAHO 904 2004-01-07 05:28
19029 Re:閒聊 -- 名稱,參考,和物件 java_sai 259 2004-10-23 18:13
» JWorld@TW »  Java 新手區

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8