import java.util.LinkedList;
import java.util.List;
public class Solution {
public static void main(String[] args) {
List<Book> books = new LinkedList<Book>();
books.add(new Book.MarkTwainBook("Tom Sawyer"));
books.add(new Book.AgathaChristieBook("Hercule Poirot"));
System.out.println(books);
}
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 agathaChristieOutput = author + ", " + getBook().getTitle() + " is a detective";
String markTwainOutput = getBook().getTitle() + " book was written by " + author;
String output = "output";
if (this instanceof AgathaChristieBook) output = agathaChristieOutput;
if (this instanceof MarkTwainBook) output = markTwainOutput;
return output;
}
public String toString() {
return getOutputByBookType();
}
public static class MarkTwainBook extends Book {
String title;
public MarkTwainBook(String title) {
super("Mark Twain");
this.title = title;
}
public MarkTwainBook getBook() { return this; }
public String getTitle() { return title; }
}
public static class AgathaChristieBook extends Book{
String title;
public AgathaChristieBook(String title) {
super("Agatha Christie");
this.title = title;
}
public AgathaChristieBook getBook() { return this; }
public String getTitle()
{ return title; }
}
}
}
ладно бы не принимал по одному-двум пунктам. так нет, ругается даже на то, что я не унаследовался от Book, как будто первая строка package com.javarush.task.task15.task1502; отсутствует в коде 
package com.javarush.task.task15.task1504;
import java.util.LinkedList;
import java.util.List;
/*
ООП - книги
*/
public class Solution {
public static void main(String[] args) {
List<Book> books = new LinkedList<Book>();
books.add(new Book.MarkTwainBook("Tom Sawyer"));
books.add(new Book.AgathaChristieBook("Hercule Poirot"));
System.out.println(books);
}
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 agathaChristieOutput = author + ", " + getBook().getTitle() + " is a detective";
String markTwainOutput = getBook().getTitle() + " book was written by " + author;
String output = "output";
if (this instanceof AgathaChristieBook) output = agathaChristieOutput;
if (this instanceof MarkTwainBook) output = markTwainOutput;
return output;
}
public String toString() {
return getOutputByBookType();
}
public static class MarkTwainBook extends Book {
String title;
public MarkTwainBook(String title) {
super("Mark Twain");
this.title = title;
}
public MarkTwainBook getBook() { return this; }
public String getTitle() { return title; }
}
public static class AgathaChristieBook extends Book{
String title;
public AgathaChristieBook(String title) {
super("Agatha Christie");
this.title = title;
}
public AgathaChristieBook getBook()
{ return this; }
public String getTitle()
{ return title; }
}
}
}