abstract class 猫科{
abstract void 叫();
}
class 猫 extends 猫科{
void 叫(){
System.out.println("喵");
}
}
class 老虎 extends 猫科{
void 叫(){
System.out.println("嚎");
}
}
为什么多此一举的去定义一个抽象类呢?
class 猫{
void 叫(){
System.out.println("喵");
}
}
class 老虎{
void 叫(){
System.out.println("嚎");
}
}
直接这样不好吗?
Java初學, 說點見解:
首先來個高階的概念, 前者我們通常稱之為設計模式之
策略模式
;說下這種模式對應的場景:
假如現在你某個類別想呼叫
猫
和老虎
的叫
方法, 怎麼辦? 用你後面的定義方式:哎呀, 同樣的代碼, 我要寫兩遍誒! 現在是代碼量小, 我還可以不怕麻煩人肉寫. 如果代碼很大的? 不但寫起來費力氣, 維護起來也噁心人啊!
好了, 現在由
策略模式
來解放你!有麼有很簡單! 寫起來好省心的說! 後面維護這段程式碼的人都會在心裡默默的感謝你!
=============================================== ==============
只是老闆會不高興: 丫給你這麼多錢, 你就給我寫這幾行代碼?!
用來保證所有貓科動物都能叫
沒有這個抽象類,誰知道你定義的阿貓阿虎會不會叫啊
子類別的共同特徵都在抽象類別中實現,子類別不需要重複實作
同時也可定義抽象方法,表達一些有類似行為,但是表現形式不同,強制子類別具體實現
目的:使得子類別表現出相同的行為介面,具體表現形式又有所不同