接口(interface)技術
什么是接口?
先看抽象類:
abstract class 類名 {
屬性1;
屬性2;
.....
非抽象方法1;
非抽象方法2;
......
抽象方法1;
抽象方法2;
......
}
設想,將上述抽象類中“實在的成員”,刪除,即刪除那些非抽象的成員。則,自然該抽象類中,就只有抽象方法;
abstract class 類名 {
抽象方法1;
抽象方法2;
......
}
由此,可以理解為:這個抽象類,“太抽象了”,幾乎自己什么都沒做,就光讓別人做什么。
那么:
接口就是這樣一個“天然不實在”的家伙:
接口,就是規定,里面只能放“抽象方法”和“常量”的一種類似類的語法結構;
——可見,接口就是“比抽象類更抽象的”一種語法結構。
接口(interface)定義形式:
interface 接口名{
常量1;
常量2;
.....
抽象方法1;
抽象方法2;
.....
}
說明:
1,可見,接口中,只有常量(接口常量)和抽象方法兩種成員;
2,接口常量的使用形式為: 接口名稱::常量名稱;
3,接口中的抽象方法,不要使用abstract修飾,也不需要使用訪問控制修飾符,因為其天然就是public
為什么需要接口?
面向對象編程思想是對“現實世界”的描述(模擬)!
現實世界往往都都是多繼承的;
但:
出於降低類跟類之間關系的復雜度的考慮,就將語言設計為單繼承的;
但這樣,就無法表達出現實世界的多繼承特性;
則:
接口就是對沒有多繼承的類之間關系的一個補充;
因為:接口可以實現“多繼承”——但此時不稱為繼承而已,而是稱為“實現”;
即:
接口1 -->> 類1;
就稱為:類1實現了接口1;
其本質,其實就是類1中,有了接口1中“特征信息”;
使用形式:
形式為:
class 類名 implements 接口名1, 接口名2, ....{
//類的定義。
}
這里,叫做,類實現了接口。
其中,接口跟接口之間,也可以繼承,跟類之間的繼承:
interface 接口1 extends 接口2{
//接口的成員定義;。。。。
}
類和接口的大總結