20155327 實踐:類定義

20155327 實踐:類定義

題目

設計並實現一個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());
}

實踐截圖

相關文章
相關標籤/搜索