首页 > 其他 > 详细

类定义(课下选做)

时间:2019-04-06 21:58:57      阅读:136      评论:0      收藏:0      [点我收藏+]

类定义(课下选做)

要求

  • Book类包含书名,作者,出版社和出版日期
  • getter,setter
  • 至少三个构造方法,接收并初始化这些数据
  • 覆盖toString方法,返回良好的含有多行的书的描述信息
  • 覆盖equals方法,书名,作者,出版社和出版日期完全一致才说明两本书是一样的。
  • 创建一个测试类Bookshelf

设计思路

  • 首先在Book类中定义所需要的变量,构造方法
  • 定义getter,setter方法
    重难点就在于toString,equals方法的重写,以前在课上测试过
  • toString()方法的重写,返回重写的字符串即可。public String toString(){ return str; }
  • equals()方法的重写,该方法用来判断的为是否为同一个对象的引用
    • public boolean equals(Object obj) { return (this == obj); }重写
    • if (this == obj) 判断对象地址是否相等,如果是就不用判断,提高效率
    • if (obj == null) 对象若为空,则不往下进行
    • f (getClass() != obj.getClass()) 判断两个对象是否一样
    • Book bk = (Book)obj 向下转型
    • 判断成员变量是否一样
  • 当equals()被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
    - hashcode不相同,用equals()方法判断的返回的一定为false。
    - hashcode相同,equals()方法返回值不能确认,可能为true,可能为false。

测试代码

public class bookShelf {
    public static void main(String[] args) {
        Book b1 = new Book("Java实用教程","耿祥义","清华大学出版社","2017年9月");
        Book b2 = new Book("密码学","郑秀林","金城出版社","2016年8月");
        Book b3 = new Book("汇编语言程序设计","钱晓捷","中国工信出版社","2018年6月");
        System.out.println(b1.getBookname());
        System.out.println(b2.getDate());
        System.out.println(b3.getPublisher());
        System.out.println(b1.equals(b2));
        System.out.println(b2.equals(b2));
    }
}

运行结果截图

技术分享图片

码云链接

参考

重写equals方法

类定义(课下选做)

原文:https://www.cnblogs.com/orii/p/10662991.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!