接口定義
當(dāng)一個抽象類中的方法都是抽象的時候,這時可以將該抽象類用另一種形式定義和表示芝此,就是接口(interface)楔脯。
定義接口使用的關(guān)鍵字不是class,是interface.
對于接口當(dāng)中常見的成員,而且這些成員都有固定的修飾符膀哲。
1. 全局常量:public static final
2. 抽象方法:public abstract
固定修飾符可省略损拢,系統(tǒng)會默認自動幫忙補齊陌粹。即可寫成 int age; void show1();void show2();
實現(xiàn)
類與類之間是繼承關(guān)系(extends),類與接口之間是實現(xiàn)關(guān)系(implements)福压。
接口不可以實例化掏秩,只能由實現(xiàn)了接口的子類,并覆蓋了接口中所有的抽象方法后荆姆,該子類才可以實例化蒙幻。否則這個子類就是一個抽象類。
多實現(xiàn)
在java中胆筒,不直接支持多繼承邮破,因為會出現(xiàn)調(diào)用的不確定性。所以java將多繼承機制進行了改良仆救,在java中變成了多實現(xiàn)抒和。即一個類可以實現(xiàn)多個接口。
細節(jié):
一個類在繼承另一個類的同時彤蔽,還可以實現(xiàn)多個接口摧莽。
接口的出現(xiàn)避免了單繼承的局限性。
接口與接口之間是繼承關(guān)系顿痪,而且接口可以多繼承镊辕。
原理:多繼承取決于方法體,接口沒有方法體蚁袭,所以可以支持多繼承征懈。但類不可以,方法體導(dǎo)致運行調(diào)用的不確定性揩悄。
接口特點
1. 接口是對外暴露的規(guī)則
2. 接口是程序的功能擴展
3. 接口的出現(xiàn)降低耦合性(解耦性)
4. 接口可以用來多實現(xiàn)
接口與抽象類的異同點
相同點:
都是不斷向上抽取而來的
不同點:
1. 抽象類需要被繼承受裹,而且只能單繼承;
接口需要被實現(xiàn),而且可以多實現(xiàn)棉饶。
2. 抽象類中可以定義抽象方法和非抽象方法,子類繼承后可以直接使用非抽象方法镇匀;
接口中只能定義抽象方法照藻,必須由子類去實現(xiàn)。
3汗侵, 抽象類的繼承是is a 關(guān)系幸缕。在定義該體系的基本共性內(nèi)容;
接口的實現(xiàn)是like a 關(guān)系晰韵,在定義體系的額外功能发乔。?
在不同的問題領(lǐng)域中,有不同的分析方式雪猪。
敲黑板的練習(xí):