Решил, но остались вопросы-недопонимания:
abstract static class Book {
private String author;
public Book(String author) {
this.author = author;
}
public abstract Book getBook();
public abstract String getTitle();
private String getOutputByBookType() {
String output="";
String agathaChristieOutput = author + ", " + getBook().getTitle() + " is a detective";
String markTwainOutput = getBook().getTitle() + " book was written by " + author;
if(this instanceof MarkTwainBook) {
output = markTwainOutput;
}
else if(this instanceof AgathaChristieBook) {
output = agathaChristieOutput;
}
return output;
}
public String toString() {
return getOutputByBookType();
}
}
public static class MarkTwainBook extends Book
{
public String title;
public MarkTwainBook(String title) { super("Mark Twain");
this.title = title;}
public MarkTwainBook getBook() {return this;};
public String getTitle() {return title;};
}
В 46 строке если не вызвать конструктор класса-родителя, то ничего работать не будет. ("There is no default constructor available").
Ясного понимания почему именно - у меня нет. Только размытые догадки.
Вот есть у нас класс Б, наследует он фичи класса А, почему должен быть создан объект класса А, чтобы Б мог существовать ?
Объясните, пожалуйста.
Или лучше посоветуйте видос/статью на русском/английском, где эти вещи разобраны как для детей. Буду признателен.