定義新接口時,你將定義新的引用數據類型,你能夠在任何能夠使用任何其餘數據類型名稱的地方使用接口名稱,若是定義類型爲接口的引用變量,則分配給它的任何對象都必須是實現接口的類的實例。segmentfault
做爲示例,這裏是一種用於查找一對對象中的最大對象的方法,用於從實現Relatable
的類實例化的任何對象:code
public Object findLargest(Object object1, Object object2) { Relatable obj1 = (Relatable)object1; Relatable obj2 = (Relatable)object2; if ((obj1).isLargerThan(obj2) > 0) return object1; else return object2; }
經過將object1
轉換爲Relatable
類型,它能夠調用isLargerThan
方法。對象
若是你在各類類中實現Relatable
,那麼能夠將從這些類中實例化的對象使用findLargest()
方法進行比較 — 前提是兩個對象屬於同一個類,一樣,它們均可以使用如下方法進行比較:繼承
public Object findSmallest(Object object1, Object object2) { Relatable obj1 = (Relatable)object1; Relatable obj2 = (Relatable)object2; if ((obj1).isLargerThan(obj2) < 0) return object1; else return object2; } public boolean isEqual(Object object1, Object object2) { Relatable obj1 = (Relatable)object1; Relatable obj2 = (Relatable)object2; if ( (obj1).isLargerThan(obj2) == 0) return true; else return false; }
這些方法適用於任何「relatable」對象,不管它們的類繼承是什麼,當它們實現Relatable
時,它們能夠是它們本身的類(或超類)類型和Relatable
類型,這爲它們提供了多重繼承的一些優勢,他們能夠從超類和接口得到行爲。接口