原文出自 http://www.cnblogs.com/ggjucheng/archive/2012/12/04/2802301.html
英文出自 http://docs.oracle.com/javase/tutorial/java/IandI/interfaceAsType.html
定義新介面時,就是定義一個新的引用資料類型。你可以使用在任何地方像使用其他類的名字一樣使用介面名。如果你定義了一個類型是介面的引用變數,賦值給這個變數的對象的類,必須實現了該介面。
例子,這裡有一個方法,從一對對象,找出最大的對象,這些對象對應的類已經實現了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類型。這給予了一些多繼承的優點,讓他們的行為繼承自父類和介面。