將介面用作型別
定義新介面時,你將定義新的引用資料型別,你可以在任何可以使用任何其他資料型別名稱的地方使用介面名稱,如果定義型別為介面的引用變數,則分配給它的任何物件都必須是實現介面的類的例項。
作為示例,這裡是一種用於查詢一對物件中的最大物件的方法,用於從實現Relatable
的類例項化的任何物件:
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
型別,這為它們提供了多重繼承的一些優點,他們可以從超類和介面獲得行為。