Решил, но остались вопросы-недопонимания:
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"). Ясного понимания почему именно - у меня нет. Только размытые догадки. Вот есть у нас класс Б, наследует он фичи класса А, почему должен быть создан объект класса А, чтобы Б мог существовать ? Объясните, пожалуйста. Или лучше посоветуйте видос/статью на русском/английском, где эти вещи разобраны как для детей. Буду признателен.