《数据结构与抽象:Java语言描述(原书第4版)》一P.3.1 写一个接口

简介:

本节书摘来华章计算机《数据结构与抽象:Java语言描述(原书第4版)》一书中的第1章 ,第1节,[美]弗兰克M.卡拉诺(Frank M. Carrano) 蒂莫西M.亨利(Timothy M. Henry) 著 罗得岛大学  新英格兰理工学院 辛运帏 饶一梅 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

P.3.1 写一个接口

Java接口的开头很像类的定义,不过要用保留字interface替代class。即接口的开头是如下的语句
image

而不是这样的
image

接口可以含有任意多个公有方法头,每个方法头的后面是一个分号。接口不声明类的构造方法,也不能声明静态或终态方法。注意,接口中的方法默认是公有的,故在方法头中可以省略puclic。接口还可以定义任意个公有命名常量。

示例。想象如圆、正方形或一块地这样的对象,它们既有周长又有面积。假定我们想让这种对象的类有一个返回数量值的get方法。如果实现这些类的程序员不是同一个人,则他们可能会用不同的方式来说明这些方法。为确保定义这些方法的类有统一的格式,我们可以写一个接口,如程序清单P-1所示。这个接口为程序员提供了方法说明的简单概要。程序员应该不必查看实现它们的类就能使用这些方法。

程序清单P-1 接口Measurable
image

将接口定义保存在一个与接口名同名的文件中,后面加上.java。例如,前面这个接口在文件Measurable.java中。

程序设计技巧:Java接口是写注释的好地方,用来说明每个方法的目的、参数、前置条件及后置条件。用这种方式,可以在一个文件中说明一个类,而在另一个文件中实现它。
注:接口可以声明数据域,但它们必须是公有的。通常,类的数据域是私有的,故接口中的任何数据域表示的都应该是命名常量。所以它们应该是公有的、终态的及静

态的。

注:接口中声明的方法不能是静态的,也不能是终态的。但是,可以在实现接口的类中声明这样的方法。

示例。假定你想定义人名的类。最开始或许定义程序清单P-2所示的Java接口,为这个人名类说明方法。限于篇幅,我们只为最开始的两个方法添加了注释。这个接口说明了类中所需要的方法。当实现附录D中程序清单D-1所示的如Name这样的类时可以使用它。另外,只看这个接口,就应该能为类写一个客户。

程序清单P-2 接口NameInterface
image

注意,方法giveLastNameTo的参数的数据类型是NameInterface而不是Name。我们将在后面谈论接口当作数据类型的话题。现在,只需知道接口不应该限制实现它的类的名字。

注:命名一个接口

接口名,特别是Java中那些标准的接口名,常常以“able”结尾,例如Measurable。这样的结尾并不总能提供一个好名字,所以也经常使用“er”或“Interface”作为结尾。与Java的异常以“Exception”为结尾一样,接口经常以“Interface”作为结尾。

相关文章
|
2月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
125 4
|
2月前
|
Java
Java语言实现字母大小写转换的方法
Java提供了多种灵活的方法来处理字符串中的字母大小写转换。根据具体需求,可以选择适合的方法来实现。在大多数情况下,使用 String类或 Character类的方法已经足够。但是,在需要更复杂的逻辑或处理非常规字符集时,可以通过字符流或手动遍历字符串来实现更精细的控制。
285 18
|
2月前
|
Java Go 开发工具
【Java】(9)抽象类、接口、内部的运用与作用分析,枚举类型的使用
抽象类必须使用abstract修饰符来修饰,抽象方法也必须使用abstract修饰符来修饰,抽象方法不能有方法体。抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象类的实例。抽象类可以包含成员变量、方法(普通方法和抽象方法都可以)、构造器、初始化块、内部类(接 口、枚举)5种成分。抽象类的构造器不能用于创建实例,主要是用于被其子类调用。抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类abstract static不能同时修饰一个方法。
234 1
|
3月前
|
算法 安全 Java
除了类,Java中的接口和方法也可以使用泛型吗?
除了类,Java中的接口和方法也可以使用泛型吗?
171 11
|
3月前
|
存储 Java Apache
Java语言操作INI配置文件策略
以上步骤展示了基本策略,在实际项目中可能需要根据具体需求进行调整优化。例如,在多线程环境中操作同一份配置时需要考虑线程安全问题;大型项目可能还需考虑性能问题等等。
200 15
|
4月前
|
存储 缓存 安全
Java集合框架(二):Set接口与哈希表原理
本文深入解析Java中Set集合的工作原理及其实现机制,涵盖HashSet、LinkedHashSet和TreeSet三大实现类。从Set接口的特性出发,对比List理解去重机制,并详解哈希表原理、hashCode与equals方法的作用。进一步剖析HashSet的底层HashMap实现、LinkedHashSet的双向链表维护顺序特性,以及TreeSet基于红黑树的排序功能。文章还包含性能对比、自定义对象去重、集合运算实战和线程安全方案,帮助读者全面掌握Set的应用与选择策略。
306 23
|
4月前
|
存储 安全 Java
Java集合框架(一):List接口及其实现类剖析
本文深入解析Java中List集合的实现原理,涵盖ArrayList的动态数组机制、LinkedList的链表结构、Vector与Stack的线程安全性及其不推荐使用的原因,对比了不同实现的性能与适用场景,帮助开发者根据实际需求选择合适的List实现。
|
4月前
|
数据采集 JSON Java
Java爬虫获取1688店铺所有商品接口数据实战指南
本文介绍如何使用Java爬虫技术高效获取1688店铺商品信息,涵盖环境搭建、API调用、签名生成及数据抓取全流程,并附完整代码示例,助力市场分析与选品决策。
|
4月前
|
安全 Java 开发者
Java集合框架:详解Deque接口的栈操作方法全集
理解和掌握这些方法对于实现像浏览器后退功能这样的栈操作来说至关重要,它们能够帮助开发者编写既高效又稳定的应用程序。此外,在多线程环境中想保证线程安全,可以考虑使用ConcurrentLinkedDeque,它是Deque的线程安全版本,尽管它并未直接实现栈操作的方法,但是Deque的接口方法可以相对应地使用。
293 12