文档

Java™教程
隐藏目录
使用接口作为类型
路径: 学习Java语言
课程: 接口和继承
章节: 接口

使用接口作为类型

当您定义一个新接口时,您正在定义一个新的引用数据类型。您可以在任何可以使用其他数据类型名称的地方使用接口名称。如果您定义的引用变量的类型是接口,那么您分配给它的任何对象必须是实现该接口的类的实例。

例如,这是一个用于找到一对对象中最大对象的方法,对于任何实例化自实现了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类型。这使它们具有多继承的一些优点,可以同时拥有超类和接口的行为。


上一页: 实现接口
下一页: 接口演化