Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
定义新接口时,你将定义新的引用数据类型。你可以在任何可以使用任何其他数据类型名称的地方使用接口名称。如果定义类型为接口的引用变量,则分配给它的任何对象 必须 是实现接口的类的实例。
作为示例,这里是一种用于查找一对对象中的最大对象的方法,对于从实现 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
类型。这为他们提供了多重继承的一些优点,他们可以从超类和接口获得行为。