說下Interface的用法【轉】
阿新 • • 發佈:2018-12-13
1.介面的概述
主要是使用介面來拓展定義類的功能,可以彌補java中單繼承的缺點。
2.介面的定義格式
interface 介面名{
屬性
抽象方法
}
介面的體驗
interface Inter
{
int num = 6; 可以定義屬性與方法。
void show();
}
注意:
介面中的所有屬性 預設的修飾符是 public static final。
介面中的所有方法 預設的修飾符是 public abstract。
3.介面的特點
(1) 類實現介面可以通過implements實現,實現介面的時候必須把介面中的所有方法實現,一個類可以實現多個介面。
(2)介面中定義的所有的屬性預設是public static final的,即靜態常量既然是常量,那麼定義的時候必須賦值。
(3)介面中定義的方法不能有方法體。介面中定義的方法預設新增public abstract
(4)有抽象函式的不一定是抽象類,也可以是介面類。
(5)由於介面中的方法預設都是抽象的,所以不能被例項化。
(6) 對於介面而言,可以使用子類來實現介面中未被實現的功能函式。
(7)如果實現類中要訪問介面中的成員,不能使用super關鍵字。因為兩者之間沒有顯示的繼承關係,況且介面中的成員成員屬性是靜態的。可以使用介面名直接訪問。
(8) 介面沒有構造方法。
interface A{ int a=12; int getA(); } interface B{ int b=10; } public class Demo1 implements A,B{ @Override public int getA() { // TODO Auto-generated method stub return 0; } }
4.介面與介面,類之間的關係
(1) 大家之前都知道類與類之間的關係繼承,那麼介面與類之間又是怎樣子的關係呢?介面與類之間是實現關係。非抽象類實現介面時,必須把接口裡面的所有方法實現。類實現介面用關鍵字implments,類與介面之間是可以多實現的(即一個類可以實現多個介面)。
interface Eraser { public static final String color = "白色"; public abstract void clean(); } class Pencil implements Eraser { String name; Pencil() { } Pencil(String name) { this.name = name; } void write() { System.out.println("寫字"); } @Override public void clean() { System.out.println("塗改..."); } }
分析:
原本鉛筆沒有塗改功能的,但是一旦實現了Eraser介面做了實現,那麼就具備了塗改功能,那麼介面的作用則是拓展功能。
(2)介面與介面之間的關係式繼承
interface A{
public void show();
}
interface B{
public void print();
}
interface C extends A,B{
}
介面與介面之間的關係是繼承,介面可以多繼承介面.
總結:
- 類與介面之間關係: 實現關係。
- 重點內容非抽象類實現一個介面時,必須要把介面中所有方法全部實現。
- 抽象類實現一個介面時,可以實現也可以不實現介面中的 方法。
- 一個類可以實現多個介面 。
- 介面與介面之間關係: 繼承關係。
- 類與介面是可以多實現的,介面與介面是可以多繼承的。
- 一個介面是可以繼承多個介面的。
這裡經常進入到面試題,這篇說的比較清楚,自己總結一下