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初学, 说点见解:
首先来个高端的概念, 前者我们通常称之为设计模式之
策略模式
;说下这种模式对应的场景:
假如现在你某个类想调用
猫
和老虎
的叫
方法, 怎么办? 用你后面的定义方式:哎呀, 同样的代码, 我要写两遍诶! 现在是代码量小, 我还可以不怕麻烦人肉写. 如果代码很大的? 不但写起来费力气, 维护起来也恶心人啊!
好了, 现在由
策略模式
来解放你!有么有很简单! 写起来好省心的说! 后面维护这段代码的人都会在心里默默的感谢你!
=============================================================
只是老板会不高兴: 丫给你这么多钱, 你就给我写这几行代码?!
用来保证所有猫科动物都能叫
没有这个抽象类,谁知道你定义的阿猫阿虎会不会叫啊
子类的共同特征都在抽象类中实现,子类不需要重复实现
同时也可定义抽象方法,表达一些有类似行为,但是表现形式不同,强制子类具体实现
目的:使得子类表现出相同的行为接口,具体表现形式又有所不同