文档

Java™ 教程-Java Tutorials 中文版
使用接口作为类型
Trail: Learning the Java Language
Lesson: Interfaces and Inheritance
Section: Interfaces

使用接口作为类型

定义新接口时,你将定义新的引用数据类型。你可以在任何可以使用任何其他数据类型名称的地方使用接口名称。如果定义类型为接口的引用变量,则分配给它的任何对象 必须 是实现接口的类的实例。

作为示例,这里是一种用于查找一对对象中的最大对象的方法,对于从实现 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 类型。这为他们提供了多重继承的一些优点,他们可以从超类和接口获得行为。


Previous page: Implementing an Interface
Next page: Evolving Interfaces