类定义
目录
要求
- 设计并实现一个Book类,定义成Book.java,Book 包含书名、作者、出版社和出版日期,这些数据都要定义getter和setter。定义至少三个构造方法,接收并初始化这些数据。覆盖(Override)toString方法,返回良好的含有多行的书的描述信息。覆盖equals方法,书名,作者,出版社和出版日期完全一致才说明两本书是一样的。
- 创建一个测试类Bookshelf, 其中的main方法创建并更新几个Book对象。Book至少包含三本本学期教材内容。
- 提交博客,要有设计思路,测试代码和运行结果截图,加上学号水印,要有码云代码链接。
- 独立完成,抄袭倒扣分。
设计思路
优先完成要求的基础定义
- 定义 Book.java 和其中的四个成员变量:bookName、bookWriter、bookPress、bookDate;
以四个成员变量为基础,定义对应的getter和setter方法;
复制String bookName, bookWriter, bookPress, bookDate;
public String getBookName() { return bookName; }
public void setBookName(String bookName) { this.bookName = bookName; }
......//省略
- 定义三种构造方法,最先构造默认方法;
复制Book() { bookName = null; ... } //设为空
Book(String bookName, String bookWriter, String bookPress, String bookDate) { ... } //使用分别赋值
Book(String bookInfor[]) { ... } //使用数组赋值
- 覆盖 toString 方法,返回良好的含有多行的书的描述信息;
覆盖 equals 方法,判定书名、作者、出版社和出版日期是否完全一致;
复制public String toString() { /*return 书名 作者 出版社 出版日期;*/ }
public boolean equals(Object o){
//再判断是不是Book类,提高代码的健壮性;向下转型,父类无法调用子类的成员和方法
//最后判断类的所有属性是否相等;其中String类型和Object类型可以用相应的equals()来判断
}
- 定义 Bookshelf.java 及其 main 方法,载入三本本学期教材内容。
复制Book bookOld[] = new Book[3];
bookOld[...] = new Book("...",......);
对基础定义进行完善、运用和拓展
- 将基础定义的程序进行完善;
- 实现添加书籍;实现书籍列表输出;实现验证书籍信息完整性;
复制Book book[] = new Book[...];
for (...) { book[...]=new Book(); }
//使用覆盖的 toString 方法输出列表
for (...) { System.out.println(book...[...].toString()); }
//使用覆盖的 equals 方法验证完整性
Scanner ((Book)wannaBook).bookName, ......; //输入要查验的书籍信息
if (book...[...].toString().equals(wannaBook.toString())) { ... } //比对已存信息和查验信息,返回期望值
- 将上述功能与 menu 菜单合并,添加退出选项,开启循环菜单。
复制Book book[] = new Book[...];
for (...) { //开启循环
System.out.println("Input the number of functions to complete:\n"
+"1. Make a list of books.\n"
+"2. Determine the accuracy of information in a book.\n"
+"0. Exit.");
if (...) {...} else if ( 0 ) { System.exit(0); } else {...} //实现合并,并添加退出选项
}
测试代码截图

运行结果截图
解释运行 [图 1 ]
添加书籍:
书名:1 作者:1 出版社:1 出版日期:1
输出列表

解释运行 [图 2 ]
不添加书籍,验证完整性
码云链接
https://gitee.com/Yogile/YogileOne.git
码云直达链接
源代码
作者:Yogile
出处:https://www.cnblogs.com/Yogile/p/10645035.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构