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