接口interface接口及其使用接口技術(shù)主要用來(lái)描述類具有什么功能,而并不給出每個(gè)功能的具體實(shí)現(xiàn)。一個(gè)類可以實(shí)現(xiàn)(implement)一個(gè)或多個(gè)接口,并在需要接口的地方,隨時(shí)使用實(shí)現(xiàn)了相應(yīng)接口的對(duì)象。 接口不是類,而是一組對(duì)類的需求描述,這些類要遵從接口描述的統(tǒng)一格式進(jìn)行定義。 如Comparable接口 public interface Comparable<T> { int compareTo(T other); } 例如,在實(shí)現(xiàn)Comparable<Employee>接口的類型中,必須提供以下方法: int compareTo(Employee other) 也可以使用沒(méi)有類型參數(shù)的Comparable類型,但必須手工地將compareTo方法的參數(shù)轉(zhuǎn)換成所希望的類型。
接口中的所有方法自動(dòng)地屬于public,因此在接口中聲明方法時(shí),不必提供關(guān)鍵字public。但是在實(shí)現(xiàn)接口時(shí),必須把方法聲明為public。 在接口中還可以定義成員變量(常量),接口中的域被自動(dòng)地設(shè)為public static final。 然而,接口絕不能含有實(shí)例域,也不能在接口中實(shí)現(xiàn)方法,提供實(shí)例域和方法實(shí)現(xiàn)的任務(wù)應(yīng)該由實(shí)現(xiàn)接口的那個(gè)類來(lái)完成。
為了讓類實(shí)現(xiàn)一個(gè)接口,通常需要下面兩個(gè)步驟: 1.將類聲明為實(shí)現(xiàn)給定的接口,使用關(guān)鍵字implements; 如:class Employee implements Comparable 2.對(duì)接口中的所有方法進(jìn)行定義。
接口也可以繼承接口,使用關(guān)鍵字extends。 接口的特性接口不是類,不能使用new運(yùn)算符實(shí)例化一個(gè)接口。 盡管不能構(gòu)造接口對(duì)象,卻能聲明接口變量,接口變量必須引用實(shí)現(xiàn)了接口的類對(duì)象。 Comparable x; x=new Employee(…); 與使用instanceof檢查一個(gè)對(duì)象是否屬于某個(gè)特定類一樣,也可以用instanceof檢查一個(gè)對(duì)象是否屬于某個(gè)特定的接口。 接口也可以像類一樣建立繼承關(guān)系。 盡管每個(gè)類只能擁有一個(gè)超類,但卻可以實(shí)現(xiàn)多個(gè)接口,使用逗號(hào)將實(shí)現(xiàn)的各個(gè)接口分隔開。 接口與抽象類C++允許一個(gè)類有多個(gè)超類,此特性稱為多繼承(multiple inheritance),而Java的設(shè)計(jì)者選擇了不支持多繼承,使用接口機(jī)制來(lái)實(shí)現(xiàn)多繼承的大部分功能。 |
|