Я изучаю ООП и получаю некоторое назначение при создании объектных ссылок и контрольных результатов. Я получил класс Book
и класс BookTest
, где в классе BookTest
я делаю 4 ссылки на объект Book
.Неожиданный вывод при повторной присвоении объектной ссылки
A Book
имеет имя и функцию, чтобы получить имя этой книги.
class Book {
private String name;
public Book(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
Ссылки на Book
объект выглядит следующим образом:
Book b1 = new Book("The story of ...");
Book b2 = b1;
Book b3 = new Book("Second story");
Book b4 = new Book("Third story");
Это все прекрасно работает, когда я распечатать b2.getName()
я получить ожидаемый "The story of ..."
строку.
Но всякий раз, когда я добавить эту строку перед печатью b2.getName()
линии:
b1 = b3;
Я ожидал b2.getName()
быть "Second story"
, потому что b1
был назначен b3
. На самом деле это строка "The story of ..."
.
Почему это?
b1 присвоен объект книги, на который указывает b3. Но b2 не получил ничего нового ... –