Как говорится в сообщении об ошибке, вы не определили конструктор для Book
, который принимает три строки, так как вы пытаетесь вызвать его в
Book hp = new Book ("Harry Potter","JK Rowling","2000");
(Как примечание, у вас есть автор и год назад)
У вас есть два варианта здесь.
Сначала вы можете создать автора до , вызывая конструктор Book
Author jkr = new Author("JK Rowling");
Book hp = new Book("Harry Potter", jkr, "2000");
Или вы можете создать новый конструктор внутри Book
, который ожидает имя автора в виде строки, создает сам объект автора и затем вызывает его как автора новой книги
public Book(String title, String author, String year) {
this.title = title;
this.author = new Author(author);
this.yearPublished = year;
}
Первая версия имеет то преимущество, что вы можете полностью использовать свой класс Author
, например, чтобы установить год рождения автора
Author jkr = new Author("JK Rowling", "1965");
Book hp = new Book("Harry Potter", jkr, "2000");
, без которого вторая версия не позволяет вам обойтись создание другого конструктора, который принимает заголовок, имя автора, год рождения автора, год издания книги.