使用接口作为类型
使用接口作为类型
定义新接口时,您实际上是在定义新的引用数据类型。您可以在使用任何其他数据类型名称的地方使用接口名称。如果您定义一个类型为接口的引用变量,则分配给它的任何对象都必须是实现该接口的类的实例。
例如,以下是一个方法,用于查找一对对象中最大的对象,适用于从实现 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
类型。这为它们提供了一些多重继承的优势,它们可以同时拥有超类和接口的行为。
上次更新: 2021 年 9 月 14 日