Given:



class Book {

    int id;
    String name;

    public Book(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public boolean equals(Object obj) { //line n1
        boolean output = false;
        Book b = (Book) obj;
        if (this.name.equals(b.name)) {
            output = true;
        }
        return output;
    }
}

and the code fragment:

Book b1 = new Book(101, "Java Programing");
Book b2 = new Book(102, "Java Programing");
System.out.println(b1.equals(b2)); //line n2

Which statement is true?

A. The program prints true.
B. The program prints false.
C. A compilation error occurs. To ensure successful compilation, replace line n1 with:

boolean equals (Book obj) {
D. A compilation error occurs. To ensure successful compilation, replace line n2 with:
System.out.println (b1.equals((Object)b2));

題解

Book類別覆寫了equals方法,當兩個Book物件的name欄位邏輯相同時,則這兩個物件也符合邏輯上的相同。

所以b1和b2變數所參考到的Book物件,有邏輯上的相同,會輸出「true」。