1. 新參和返回值
1.1 類名作爲形成和返回值
代碼示例:
方法的形參是抽象類名
抽象動物類:
定義了一個抽象的eat方法
動物的操作類:
創建一個useAnimal方法,它的形參是抽象類Animal
測試類:
創建操作類對象,並調用方法:
調用方法時,提示我們需要的是Animal類型的實參。往下看
在操作類中,看到Animal a 也能調用方法,說明a是一個實例對象。
但是Animal是一個抽象類,並不能實例化,這裏只能使用多態的形式,所以需要的是它的子類對象,創建它的子類對象然後傳遞過來。
當子類傳遞過來時就形成這樣:Animal a = new 子類;
那麼就創建一個Animal的子類Cat,並繼承它:
繼續寫測試類:
通過多態的形式將創建對象a,然後將a傳遞給useAnimal方法,
形成:Animal a = new Cat();
然後調用eat方法輸出“貓喫魚”
運行結果:
方法的返回值是抽象類名
繼續編寫操作類:
這裏將void改爲Animal,所以返回的是Animal對象,但是Animal對象是抽象類,不能直接實例化。
所以我們利用多態的形式,返回它的子類。
Animal a = new Cat();
- 可以得出結論:
方法的返回值是抽象類名,其實返回的是該抽象類的子類對象
在測試類中調用:
ao.getAnimal返回的是Animal的子類對象Cat,
就形成了:Animal a2 = new Cat();
運行結果:
和將抽象類做爲新參的結果是一樣的。
1.2 接口名作爲新參和返回值
將接口名作爲新參和返回值,其實是和抽象類一樣的,
只不過接口將子類變成了實現類。