这些Java教程是针对JDK 8编写的。本页中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
请参阅Java语言变更以获取Java SE 9及后续版本中更新的语言特性摘要。
请参阅JDK发行说明以获取有关所有JDK版本的新功能、增强功能以及已删除或弃用选项的信息。
当您定义一个新接口时,您正在定义一个新的引用数据类型。您可以在任何可以使用其他数据类型名称的地方使用接口名称。如果您定义的引用变量的类型是接口,那么您分配给它的任何对象必须是实现该接口的类的实例。
例如,这是一个用于找到一对对象中最大对象的方法,对于任何实例化自实现了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
类型。这使它们具有多继承的一些优点,可以同时拥有超类和接口的行为。