2013-08-25 82 views
0
interface I{ 
} 
class A implements I{ 
} 

class B extends A { 
} 

class C extends B{ 

    public static void main(String args[]) 
    { 
     A a = new A(); 
     B b = new B(); 

     b = (B)(I)a; //Line 1 
    } 
} 

我知道這是不是一個實際的代碼:)在繼承的對象

我只需要知道鑄件如何得到的線做1

我所知道的參考變量「多重鑄造'被鑄造到B類/接口I.

但我不確定鑄造發生的順序..有人可以告訴我哪個鑄件首先被執行。

PS:我搜索了類似的職位,但其中大部分是從C++如果類似的職位已經有WRT到Java做點it..tx

+0

你可以不投強制轉換爲鑄造:一個 - > I - > B. –

回答

3

a被轉換爲類型I第一,然後去。鍵入B,因爲投射是右聯合的。

0

你爲什麼要把它放在第一位?這是多層次的繼承,但是這裏發生的是他們所有的方法在類A中被繼承,因爲類B繼承了類A,類A中的方法被傳遞到類B上。這意味着類A繼承的所有方法也會在B類

這意味着B類也是一種類我的,所以我認爲沒有必要投在所有