欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVASE官方教程:接口之把接口作为类型使用(4)

程序员文章站 2022-03-02 10:32:48
...

当你定义了一个接口,你也定义了一种引用数据类型(reference data type).你可以在任何可以使用其他数据类型名的地方使用接口名称.如果你定义了一个接口类型的变量,你只能用实现了这个接口的类的实例来给他赋值.

例如,有一个在两个对象之中找出最大的方法,每一个对象都必须从实现了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;
}

 不管他们的类继承是什么样子,这些方法对每个"相关的"对象起作用.