1. 程式人生 > >Java介面特徵與細節

Java介面特徵與細節

介面

  • 書面定義:
    Java介面是一系列方法的宣告,是一些方法特徵的集合,一個介面只有方法的特徵沒有方法的實現,因此這些方法可以在不同的地方被不同的類實現,而這些實現可以具有不同的行為(功能)。

在java中不直接支援多繼承,因為會出現呼叫的不確定性。所以java將多繼承機制進行改良,在java中變成了多實現。

當一個抽象類裡面全部是抽象方法時,且與繼承類之間實現功能體現更強於所屬關係,就可以定義為介面interface,更趨近於體現功能的集合特點

介面的特徵:

對於介面當中常見的成員:而且這些成員都有固定的修飾符。
1.全域性常量: public static final
2.抽象方法:public abstract
所以介面中的成員都是公共的許可權.

3.只能由實現了介面的子類並覆蓋了介面中所有的抽象方法後,該子類才可以例項化。
否則,這個子類就是一個抽象類。介面是不能直接通過new來例項化的,沒有具體實現的介面例項化也沒有意義。

介面與普通類:
類與類之間是繼承的關係
類與介面之間是實現關係,而且類的單繼承可以有多實現(同時實現多個介面)
介面與介面之間是繼承關係,而且介面的繼承可以是多繼承
(因為介面的方法並沒有方法體,即便繼承也不用實現方法)

介面在OOP的特點體現:
1.是對外暴露的規則
2.是對程式的功能擴充套件
3.介面的出現降低了耦合性
關於介面與抽象類的區別請看

class Demo
{
    void
show() { System.out.println("父類方法"); } } interface Demo1 { public static final int NUM = 1; public abstract void method(); } interface Demo2 { double Circle_DIRECT = 2.45; //系統自動加上public static final void method();//系統自動加上public abstract int add(int a, int b); } class DemoImpl
extends Demo implements Demo1,Demo2 {
public void method() { System.out.println("實現介面1,介面2"); //實現具體方法,同時了覆蓋兩個介面中的方法 } public int add(int a,int b) { return a+b; }//必須覆蓋所有實現介面的抽象方法,否則還是要定義為介面 } public class InterfaceDemo { public static void main(String[] args) { DemoImpl d = new DemoImpl(); d.show(); d.method(); System.out.println(d.add(1,2)); System.out.println(d.NUM); System.out.println(Demo1.NUM); } }