[Java] 繼承複寫之探討

先來探討 Return 值得複寫

先來撰寫一個父類別 TestP.java 如下

import java.io.InputStream;
public class TestP {
 public void setInputStream(InputStream is){
 }
}

最基本的複寫

import java.io.InputStream;
public class TestP {
 public void setInputStream(InputStream is){
 }
}

請看InputStream的樹狀結構
測試1 : 先用父類別 Object

import java.io.InputStream;

public class TestS extends TestP {
 @Override
 public void setInputStream(Object is) {
  super.setInputStream(is);
 }
}

運行結果有錯誤 

測試2 : 用子類別測是

import java.io.FileInputStream;
import java.io.InputStream;

public class TestS extends TestP {
 @Override
 public void setInputStream(FileInputStream is) {
  super.setInputStream(is);
 }
}

結果還是錯

結論 參數的複寫,需要型別完全一樣,才能算是複寫,不然都是多形

留言

這個網誌中的熱門文章

angular 如何Http 如何設定 CORS (Cross-Origin Resource Sharing)

Google Map 單車路徑計算坡度和角度小工具

Google URL Shortener API 快速教學