算法(4th ed)(100):基础——数据抽象 4.5.4

阅读数:11 2019 年 11 月 2 日 12:20

算法(4th ed)(100):基础——数据抽象 4.5.4

(数据类型的设计:接口继承)

Java 语言为定义对象之间的关系提供了支持,称为接口。程序员广泛使用这些机制,如果上过软件工程的课程那么你可以详细地研究一下它们。我们学习的第一种继承机制叫做子类型。它允许我们通过指定一个含有一组公共方法的接口为两个本来并没有关系的类建立一种联系,这两个类都必须实现这些方法。例如,如果不使用我们的非正式 API,也可以为 Date 声明一个接口:

复制代码
public interface Datable
{
int month();
int day();
int year();
}

并在我们的实现中引用该接口:

复制代码
public class Date implements Datable
{
// 实现代码(和以前一样)
}

这样,Java 编译器就会检查该实现是否和接口相符。为任意实现了 month()day()year() 的类添加 implements Datable 保证了所有用例都能用该类的对象调用这些方法。这种方式称为接口继承——实现类继承的是接口。接口继承使得我们的程序能够通过调用接口中的方法操作实现该接口的任意类型的对象(甚至是还未被创建的类型)。我们可以在更多非正式的 API 中使用接口继承,但为了避免代码依赖于和理解算法无关的高级语言特性以及额外的接口文件,我们并没有这么做。在某些情况下 Java 的习惯用法鼓励我们使用接口:我们用它们进行比较迭代,如表 1.2.16 所示。我们会在接触那些概念时再详细研究它们。

表 1.2.16 本书中所用到的 Java 接口

接口 方法 章节
比较 java.lang.Comparable
java.util.Comparator
compareTo()
compare()
2.1
2.5
迭代 java.lang.Iterable
 
java.util.Iterator
 
iterator()
hasNext()
next()
remove()
1.3
 
1.3
 

评论

发布