使用interface來定義一個接口。接口定義同類的定義類似,也是分為接口的聲明和接口體,其中接口體由常量定義和方法定義兩部分組成。定義接口的基本格式如下:
[修飾符] interface 接口名 [extends 父接口名列表]{
[public] [static] [final] 常量; //全局常量
[public] [abstract] 方法; //抽象方法
}
修飾符:可選,用於指定接口的訪問權限,可選值為public。如果省略則使用默認的訪問權限。
接口名:必選參數,用於指定接口的名稱,接口名必須是合法的Java標識符。一般情況下,要求首字母大寫。
extends 父接口名列表:可選參數,用於指定要定義的接口繼承於哪個父接口。當使用extends關鍵字時,父接口名為必選參數。
方法:接口中的方法只有定義而沒有被實現。
public abstract void eat(); //接口中只能定義抽象方法
void eat(); //接口中定義的方法沒有聲明修飾符,默認為 public abstract
public static final int NUM = 10; //在接口中定義一個常量
int NUM = 10; //常量
在JDK1.8后的新特性,可以被所有實現類
//接口之間可以多繼承(注意:類是只能單繼承)
//具體類實現接口必須實現接口的所有方法
接口的概念
1.接口是一組行為的規范、定義,沒有實現(JDK1.8默認方法)
2.使用接口,可以讓我們的程序更加利於變化
3.接口是面向對象編程體系中的思想精髓之一
4.面向對象設計法則:基於接口編程
接口的使用規則:
(1)定義一個接口,使用interface關鍵字
(2)在一個接口中,只能定義常量、抽象方法,JDK1.8后可以定義默認的實現方法
(3)接口可以繼承多個接口,extends xxx,xxx
(4)一個具體類實現接口使用inplements關鍵字
(5)一個類可以實現多個接口
(6)抽象實現接口可以不實現接口的方法
(7)在接口中定義的方法沒有聲明訪問修飾符,默認為public
(8)接口不能有構造方法
(9)接口不能被實例化
面向對象設計原則
(1)對修改關閉,對擴展開放
(2)面向接口編程
接口概述:
- 狹義的角度講就是指java中的interface
- 廣義的角度講對外提供規則的都是接口
接口特點:
- 接口用關鍵字interface表示 interface 接口名{}
- 類實現接口用implement表示 class 類名 implement 接口名{}
- 接口不能實例化 按照多態的方式來實例化
- 接口的子類 可以是抽象類(意義不大),可以是具體類(要重寫接口中的所有抽象方法)
一個類不寫繼承任何類,默認繼承object類
接口的成員特點:
成員變量:只能是常量,並且是靜態的並公共的,默認修飾符:public static final(不寫系統默認加上,沒有順序之分)
構造方法:接口沒有構造方法
成員方法:只能是抽象方法 默認修飾符: public abstract(默認加上)
類與類,類與接口,接口與接口的關系:
- 類與類 只能單繼承,可以多層繼承
- 類與接口
- 實現關系,可以單實現,也可以多實現
- 並且還可以在繼承一個類的同時實現多個接口
- 接口與接口
- 可以單繼承,也可以多繼承
抽象類和接口的區別
成員區別:
- 抽象類
- 成員變量:可以變量,也可以常量
- 構造方法:有
- 成員方法:可以抽象,也可以非抽象
- 接口
- 成員變量:只可以常量
- 成員方法:只可以抽象
關系區別:
- 類與類 繼承,單繼承
- 類與接口 單實現,多實現、
- 接口與接口 單繼承,多繼承
設計理念區別:
- 抽象類 被繼承的體現是:“is a”的關系。抽象類中定義的是該繼承體系的共性功能
- 接口 被實現體現的是:“like a”的關系。接口中定義的是該繼承體系的擴展功能