介面和抽象類 (abstract)
一、抽象類:
被 abstract 修飾的類,稱為抽象類;
被 abstract 修飾的方法稱為:抽象方法,抽象方法只有方法宣告沒有方法體;
抽象類特點:
1.不能被例項化,只能被繼承;
2.抽象類是否包含抽象方法均可,也可以包含普通方法;包含抽象方法的類一定要宣告為抽象類;
3.抽象方法的修飾符只能有:public 、protect 和 defalut,預設是 public
4.一個類繼承抽象類,則子類必須實現抽象類的抽象方法,否則子類也必須定義為抽象類;
5.抽象類可以包含:屬性、方法、構造方法,但構造方法不能用來例項化物件,只能被子類呼叫;
二、介面:
介面是一種特殊的類,只能用 interface 修飾
介面特點:
1.介面中可以包含:屬性和方法;
2.介面可以支援多繼承,即:一個介面可以
3.一個類可以實現多個介面,一個類實現某個介面則必須實現介面中的抽象方法,否則該類必須定義為抽象類;
三、相同點:
1.均不能被例項化
2.兩者都包含抽象方法,實現介面或繼承抽象類的普通子類必須實現這些抽象方法
四、區別:
1.功能性:
介面:定義規範,類似於:系統總綱
抽象類:抽象出子類通用特性,體現的是模版式設計
2.實現:
介面:子類使用 implements 關鍵字實現介面,需要提供介面中所有宣告方法的實現;
介面可以 extends 另一個介面
抽象類:子類使用 extends 來繼承抽象類,如果子類不是抽象類,則需要提供抽象類所有宣告方法的實現;
3.訪問修飾符:
介面:public
抽象類:public 、protected 和 defalut
4.方法:
介面:不能包含普通方法;
抽象類:可以包含普通方法;
5.變數:
介面:只能定義靜態常量,不能定義普通成員變數;
抽象類:既可以定義靜態常量,也可以定義普通成員變數;
6.構造方法:
介面:無
抽象類:構造方法不是用於建立物件,而是讓其他子類呼叫這些構造方法來完成屬於抽象類的初始化操作;
7.初始化塊:
介面:無
抽象類:可以包含;
8.main 方法:
介面:無
抽象類:可以有
9.與普通 java 類的區別:
介面:是完全不同的型別
抽象類:抽象類不能被例項化,其他方面與普通類沒有任何區別;
10.執行速度:
介面:稍慢
抽象類:比介面快
五、應用場景:
1.如果有一些方法並想讓它們有預設實現,則使用抽象類;
2.如果想實現多重繼承,使用介面;
3.如果基本功能不斷改變,則使用抽象類;
相關文章
- PHP中的 抽象類(abstract class)和 介面(interface)PHP抽象
- TypeScript abstract 抽象類TypeScript抽象
- 抽象類和介面抽象
- 走進C# abstract,瞭解抽象類與介面的異同C#抽象
- 介面和抽象類詳解抽象
- java中抽象類和介面Java抽象
- 介面的行為抽象和抽象類的行為抽象抽象
- java中的抽象類abstract怎麼使用?Java抽象
- Java抽象類和介面 小白版Java抽象
- 介面和抽象類的區別抽象
- Java基礎-抽象類和介面Java抽象
- C++中的抽象基類(Abstract Base Class)C++抽象
- 抽象類和介面,你瞭解多少?抽象
- 抽象類與介面抽象
- 抽象類VS介面抽象
- JAVA基礎之三-介面和抽象類Java抽象
- 關於抽象類和介面的初步理解抽象
- java介面和抽象類的簡單理解Java抽象
- Java中抽象類和介面的區別Java抽象
- 抽象類 & 介面比較抽象
- Java的抽象類 & 介面Java抽象
- JavaSE第三章 物件導向 抽象類 abstractJava物件抽象
- 抽象方法和抽象類抽象
- 結合實戰理解 Java 抽象類和介面Java抽象
- java-介面和抽象類的聯絡和區別。Java抽象
- 抽象類及介面詳解抽象
- 介面和抽象理解抽象
- JavaSE基礎知識學習—–抽象類和介面Java抽象
- 抽象語法樹 Abstract syntax tree抽象語法樹
- Java 的抽象類, 介面以及內部類Java抽象
- java中的抽象類與介面Java抽象
- Java的抽象類與介面理解Java抽象
- Java總結-抽象類與介面Java抽象
- 抽象類和介面到底是什麼垃圾——秒懂抽象
- 【Java基本功】聊聊抽象類和介面的區別Java抽象
- Java 基礎學習總結(一)抽象類和介面Java抽象
- 介面、抽象類、普通類之間的關係抽象
- 介面是否可繼承(extends)介面? 抽象類是否可實現 (implements)介面? 抽象類是否可繼承具體類(concrete class)?繼承抽象