将接口用作类型
将接口作为类型
定义新接口时,您实际上是在定义一种新的引用数据类型。接口名称可在任何可使用其他数据类型名称的位置使用。若定义类型为接口的引用变量,则赋值给该变量的任何对象都必须是实现该接口的类的实例。
例如,以下是一种在任意对象对中查找最大对象的方法,适用于从实现 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 类型。这赋予了它们多重继承的部分优势——既能继承父类的行为,又能继承接口的行为。