2.5 Casting轉型
(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反之就是Upcast,Upcast不用特地用程式表達出來,因為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 遵守所有Overridding之Rules
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() {} //Bounceable的method
public void setBounceFactor(int bf) {} //Bounceable的method
}
留言列表