设计并实现一个Book类,定义义成Book.java,Book 包含书名,做者,出版社和出版日期,这些数据都要定义getter和setter。定义至少三个构造方法,接收并初始化这些数据。覆盖(Override)toString方法,返回良好的含有多行的书的描述信息。覆盖equals方法,书名,做者,出版社和出版日期彻底一致才说明两本书是同样的。java
建立一个测试类Bookshelf, 其中的main方法建立并更新几个Book对象。Book至少包含三本本学期教材内容。数据结构
提交博客,要有设计思路,测试代码和运行结果截图,加上学号水印,要有码云代码连接。ide
学习过程
1.写一个最初级的代码函数
2.对数据进行getter和setter:学习
经过右键选择Source -> Generate Getters and Setters
测试
3.覆盖toString()方法:this
经过右键– source- Generate toString()… 选择要输出的变量设计
1覆盖的通用约定。code
自反性。对于任何非null的引用值x,x.equals(x)必须返回true
对称性。对于任何非null的引用值x和y,当且仅当y.equals(x)返回true时,x.equals(y)必须返回true。
传递性。对于任何非null的引用值x、y和z,若是x.equals(y)返回true,而且y.equals(z)返回true,那么x.equals(z)则必须返回true。
一致性。对于任何非null的引用值x、y,只要equals的比较操做在对象中所用的信息没有被修改,屡次调用x.equals(y)就会一直返回true,或者一致返回false。
对于任何非null的引用值x,x.equals(null)必须返回false。对象
2.构造函数间的调用用this,this表明所属函数的引用。
3对数据进行getter和setter好处:建一个类,声明一个变量,并给了它getter和setter方法。
setter方法在刚开始建立变量时没有赋值,后面用这个方法给他赋值
getter方法,变量有了值后就能够用这个方法把它调出来。
4.equals方法对于字符串来讲是比较内容的,而对于非字符串来讲是比较其指向的对象是否相同的。
public class Book { public String getName() { return Name; } public void setName(String name) { this.Name = name; } public String getWriter() { return Writer; } public void setWriter(String writer) { this.Writer = writer; } public String getPublishingHouse() { return PublishingHouse; } public void setPublishingHouse(String publishingHouse) { this.PublishingHouse = publishingHouse; } public String getPublishingDate() { return PublishingDate; } public void setPublishingDate(String publishingDate) { this.PublishingDate = publishingDate; } private String Name; private String Writer; private String PublishingHouse; private String PublishingDate; @Override public String toString() { return "Book{" + "Name='" + Name + '\'' + ", Writer='" + Writer + '\'' + ", PublishingHouse='" + PublishingHouse + '\'' + ", PublishingDate='" + PublishingDate + '\'' + '}'; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Book book = (Book) o; if (!Name.equals(book.Name)) return false; if (!Writer.equals(book.Writer)) return false; if (!PublishingHouse.equals(book.PublishingHouse)) return false; return PublishingDate.equals(book.PublishingDate); } @Override public int hashCode() { int result = Name.hashCode(); result = 31 * result + Writer.hashCode(); result = 31 * result + PublishingHouse.hashCode(); result = 31 * result + PublishingDate.hashCode(); return result; } public static void main(String[] args) { Book book = new Book(); book.setName("测试用例"); book.setPublishingDate("2017.5.17"); book.setWriter("20155327"); book.setPublishingHouse("JAVA"); System.out.println(book.toString()); }
产品代码
class BookShelf { public static void main(String[] args) { Book book1 = new Book(); Book book2 = new Book(); Book book3 = new Book(); book1.setName("JAVA学习笔记"); book1.setPublishingDate("2015.3.1"); book1.setWriter("林信亮"); book1.setPublishingHouse("清华大学印刷厂"); book2.setName("汇编"); book2.setPublishingDate("2017.5.17"); book2.setWriter("mmm"); book2.setPublishingHouse("nnn"); book3.setName("数据结构"); book3.setPublishingDate("2017.5.17"); book3.setWriter("qqq"); book3.setPublishingHouse("aaa"); System.out.println(book1.toString()); System.out.println(book2.toString()); System.out.println(book3.toString()); }
实践截图