package com.javarush.test.level15.lesson02.task04; /* ООП - книги 1. Создайте public static класс MarkTwainBook, который наследуется от Book. Имя автора [Mark Twain]. Параметр конструктора - имя книги. 2. В классе MarkTwainBook реализуйте все абстрактные методы. 3. Для метода getBook расширьте тип возвращаемого результата. 4. Создайте по аналогии AgathaChristieBook. Имя автора [Agatha Christie]. 5. В классе Book реализуйте тело метода getOutputByBookType так, чтобы он возвращал: 5.1. agathaChristieOutput для книг Агаты Кристи; 5.2. markTwainOutput для книг Марка Твена. */ 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 MarkTwainBook("Tom Sawyer")); books.add(new AgathaChristieBook("Hercule Poirot")); System.out.println(books); } public abstract static class Book { private String author; public Book(String author) { this.author = author; } public abstract Book getBook(); public abstract String getName(); private String getOutputByBookType() { String agathaChristieOutput = author + ", " + getBook().getName() + " is a detective"; String markTwainOutput = getBook().getName() + " book was written by " + author; String output = "output"; Book book = getBook(); if(book instanceof MarkTwainBook){ output = markTwainOutput; }else if(book instanceof AgathaChristieBook){ output = agathaChristieOutput; } //Add your code here return output; } public String toString() { return getOutputByBookType(); } } public static class MarkTwainBook extends Book{ private String bookName; public MarkTwainBook(String bookName) { super("Mark Twain"); this.bookName = bookName; } @Override public MarkTwainBook getBook(){ return (MarkTwainBook)this; } @Override public String getName(){ return bookName; } } public static class AgathaChristieBook extends Book{ private String bookName; public AgathaChristieBook(String bookName) { super("Agatha Christie"); this.bookName = bookName; } @Override public AgathaChristieBook getBook() { return (AgathaChristieBook )this; } @Override public String getName() { return bookName; } } }
Leave A Comment