前言
- 在
Java
中,實現(xiàn) 抽象的機(jī)制有2種:抽象類(abstract class
)和接口(Interface
) - 二者非常類似,甚至可相互替換,因此很多開發(fā)者開發(fā)時對于二者的選擇十分隨意。其實,2者之間存在很大區(qū)別
- 本文將對抽象類(
abstract class
)、接口(Interface
) & 之間的區(qū)別 進(jìn)行詳細(xì) 講解剖析
目錄
示意圖
1. 知識儲備:抽象是什么?
示意圖
下面,將主要講解Java
中抽象的2種實現(xiàn)方式:抽象類(abstract class
)和接口(Interface
)
2. 抽象類(abstract class)
- 簡介如下
示意圖
- 示例
// 定義1抽象動物類Animal,提供抽象方法 = cry()
public abstract class Animal {
public abstract void cry();
}
// 貓、狗 = 動物類的子類
// 由于cry()為抽象方法,所以Cat、Dog必須要實現(xiàn)cry()
public class Cat extends Animal{
@Override
public void cry() {
System.out.println("貓叫:喵喵...");
}
}
public class Dog extends Animal{
@Override
public void cry() {
System.out.println("狗叫:汪汪...");
}
}
// 測試
public class Test {
public static void main(String[] args) {
Animal a1 = new Cat();
Animal a2 = new Dog();
a1.cry();
a2.cry();
}
}
// 運行結(jié)果
貓叫:喵喵...
狗叫:汪汪...
3. 接口(Interface)
- 介紹如下
示意圖
- 示例
interface Demo{
void method1();
void method2();
}
class Test implements Demo{
void method1();
void method2();
}
4. 二者的區(qū)別
示意圖
5. 實例講解
下面給出1個簡單的例子,讓大家更好地去理解二者的區(qū)別 & 應(yīng)用場景
5.1 需求描述
- 需求1:有1類門,其本質(zhì)功能 = 開門 & 關(guān)門
- 需求2:為上述這類門增加1個報警器,可進(jìn)行報警
5.2 需求實現(xiàn)
- 該需求的實現(xiàn)方案有3種,均可完成需求:
1=只使用抽象類、2=只使用接口、3=同時使用抽象類 & 接口
- 具體請看如下:
// 方案1:只使用抽象類
abstract class Door{
abstract void open();
abstract void close();
abstract void alarm();
}
// 具體使用時
class AlarmDoor extends Door {
void open(){}
void close(){}
void alarm(){}
}
// 方案2:只使用接口
interface Door{
void open();
void close();
void alarm();
}
// 具體使用時
class AlarmDoor implements Door {
void open(){}
void close(){}
void alarm(){}
}
// 方案3:同時使用抽象類 & 接口
// 對于需求1 = 抽象1類事物,即 使用抽象類
abstract class Door{
abstract void open();
abstract void close();
}
// 對于需求2 = 抽象事物中的某個行為, 即 使用 接口
interface Alarm{
void alarm();
}
// 具體使用時
class AlarmDoor extends Door implements Alarm{
void open(){}
void close(){}
void alarm(){}
}
- 雖然3種實現(xiàn)方式均可完成需求,可是,明顯使用方案3 更加符合 抽象類 & 接口的使用
6. 總結(jié)
本文主要對 抽象類(abstract class
)、接口(Interface
)進(jìn)行了全面總結(jié)
歡迎關(guān)注Carson_Ho的簡書!
分享Android技術(shù)干貨,追求短、平、快,但卻不缺深度。
請點贊!因為你的鼓勵是我寫作的最大動力!
相關(guān)文章閱讀
Android開發(fā):最全面、最易懂的Android屏幕適配解決方案
Android事件分發(fā)機(jī)制詳解:史上最全面、最易懂
Android開發(fā):史上最全的Android消息推送解決方案
Android開發(fā):最全面、最易懂的Webview詳解
Android開發(fā):JSON簡介及最全面解析方法!
Android四大組件:Service服務(wù)史上最全面解析
Android四大組件:BroadcastReceiver史上最全面解析