JAVA 覆寫回傳值
JAVA 程式碼
//作者:骷骷
//網誌:http://bekachu.pixnet.net/blog
class A{
public void print(){
System.out.println("A");
}
}
class B extends A{
public void print(){
System.out.println("B");
}
}
class F{
public A get(){
return new A();
}
}
class S extends F{
public B get(){
return new B();
}
}
//編譯會不通過
//class SS extends S{
//
// public A get(){
// return new A();
// }
//}
class SS2 extends S{
public B get(){
return (B) new A();
}
}
public class Test{
public static void main(String[] args) {
new F().get().print();
new S().get().print();
SS2 notGood=new SS2();
//編譯沒問題,但是執行會出錯
//notGood.get();
}
}
/*輸出結果:
A
B
*/
==========
跟上一篇的內容類似,JAVA 覆寫回傳值也是必須有繼承關係,
如果要重新覆寫方法的回傳值,那只能用子類別來進行覆寫,
觀念跟 父類別 A=new 子類別B(); 類似,
所以當使用強制轉型時,也會出現類似的錯誤,
骷骷在此記錄下來。
強制轉型的使用時機,骷骷覺得是用來強制恢復原型用的,
就是子類別可以假裝(宣告)成父類別,
然後強制轉型可以暫時恢復子類別的身份,
就可以解除原本父類別的封印,
使用原本就擁有的能力(方法、成員)。
文章標籤
全站熱搜
留言列表