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

简介:

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

P.3.2 实现一个接口

实现接口的任何类,必须在类定义的开头使用implements子句进行说明。例如,如果类Circle实现了接口Measurable,它的开头就是下面这种形式:
image

然后,类必须定义接口中声明的每个方法。在本例中,类Circle必须至少实现方法getPerimeter和getArea。
如果写一个实现Measurable的类Square,这个类的开头应该是这样的:
image

且它至少应该定义方法getPerimeter和getArea。显然,这两个方法的定义不同于它们在类Circle中的定义。
图P-3展示了包含Measurable、Circle、Square以及它们的客户的文件。

image

注:写接口是类的设计人员向其他程序员说明方法的一种方式。实现接口是程序员确保类已经定义了某些方法的一种方式。
注:不同的类或许以不同的方式实现同一个接口。例如,可以有多个类都实现接口Measurable,且为方法getPerimeter和getArea写各自的版本。
示例。想象用于圆、球体和圆柱体等不同几何形状的类。其中的每一个几何体都有一个半径。我们可以定义下列接口,让类来实现它:

image

接口能知道已经定义了半径,所以为这个量声明set方法和get方法。但是,不能为半径声明数据域。实现接口的类来做这件事。
实现这个接口的类Circle如下所示:
image

类定义了一个私有数据域radius,且实现了接口Circular中声明的方法setRadius和getRadius。接口中不能含有像radius这样的数据域,因为它是私有的。

注:类中定义的方法数可以超出它实现的接口中声明的方法数。例如,类Circle定义了方法getArea,它没有包含在接口Circular中。

多个接口。类可以实现多个接口。如果想这样做,只需列出所有的接口名,并以逗号分隔即可。如果类是从另一个类派生而来的,则implements子句永远在extends子句的后面。所以,可以写
image

要想记住这个次序,只需记住保留字extends和implements在类头中以字母序出现即可。
实现多个接口的类必须定义接口中声明的每个方法。如果在类实现的多个接口中出现了相同的方法头,则类中只需定义一个即可。
不能从多个基类派生一个类。这个限制避免了实现继承时可能出现的冲突。但Java接口含有方法的规格说明,但不实现它们。类可以实现这些规格说明,而不管它们出现在一个接口中还是出现在多个接口中。通过允许类来实现多个接口这种机制,Java既实现了多重继承,又去掉了它可能引起的混乱。

自测题5 写一个Java接口,它定义学生类并声明其中的方法。

自测题6 定义一个类,规范实现前一个问题中你写的接口。要包含数据域、构造方法及至少一个方法的定义。

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

热门文章

最新文章