close

  2.5 Casting轉型

 



 

1、 Superclass轉型為Subclass稱為Downcast

(O) Seiyuu s1 = new Akira();

     Akira a1 = (Akira) s1;

(X) Seiyuu s1 = new Seiyuu();

     Akira a1 = (Akira) s1; // Compiler會過,但Runtime Error

   Compiler有時也會判斷轉型成功的可能性,要是不可能轉型成功,就會印出Error,就如同下面這樣:

String str = (String) s1; //想像一下一個聲優怎麼可能轉職去當字串XD

 

2、 Downcast反之就是UpcastUpcast不用特地用程式表達出來,因為Akira IS-A Seiyuu是一件很自然的事!

<<< Example >>>

Akira a1 = new Akira();

//此兩種寫法都是ok

Seiyuu s1 = a1;                    //沒有明確要求轉型

Seiyuu s2 = (Seiyuu) a1;  //明確要求轉型

 

3、 一個Superclass實作一介面並處理該介面之Method,他的Children就不用再處理一次,可直接進行呼叫。

 

2.6 Interface

 

   若一個非抽象Class要實作一介面,就必須做到下列幾項:

n       實作該介面裡所有的Method

n       遵守所有OverriddingRules

n       除了介面Method(或他的Subclass的實作Method)所宣告的Exception外,不能再宣告其他Exception

n       維持和介面相同的Return Type,但不需要宣告Interface Method已宣告的例外。

n       一個類別可實作多個介面,但只能繼承一個類別。

n       一個介面可以extends多個介面,但不能Implements任何東西。

n       介面不能Implements介面,也不能extends類別。

 

   一個抽象類別可不用實作該介面的Method,而由繼承他的第一個非抽象類別來實作。

<<< Example >>>

      abstract class Ball implements Bounceable { }

   

class BeachBall extends Ball {

public void bounce() {} //Bounceablemethod

public void setBounceFactor(int bf) {} //Bounceablemethod

       }

 

 


 


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 SkyChord 的頭像
    SkyChord

    No fUtUrE

    SkyChord 發表在 痞客邦 留言(0) 人氣()