Я работаю над проблемой наследования. У меня супер класс Книги. Тогда у меня есть класс Телефон, который расширяет книгу. Затем у меня есть привод PolyMain, который использует массив для генерации вывода. Мне было поручено следующее:Необходима помощь с кодом наследования и конструктора
* Конструктор класса Phone должен суммировать whitePages + yellowPages, чтобы получить общее количество страниц в книге и передать это суперклассу книги в качестве единственного параметра в супервызове. Помните, что общее количество страниц в книге и название книги заданы в конструкторе класса Book.
Измените класс PolyMain, чтобы создать хотя бы одну из ваших телефонных книг и сохранить ее в библиотеке. Теперь вы должны иметь возможность распечатывать библиотеку, не изменяя метод печати, определенный в классе PolyMain. *
Вывод должен иметь заголовок, количество страниц (всего), # желтых страниц и # белых страниц , Программа ниже дает мне эту информацию.
Однако в PolyMain добавлены целые числа Пример: библиотека [2] = новый роман («Farm Farm», 250, 9); Добавлены «250 и 9», и это то, что печатает для страниц и разделов.
Как я должен быть уверен, что мой конструктор суммирует желтые страницы и белые страницы, если мне нужно добавить числа в класс PolyMain? библиотека [3] = новый телефон («Справочник Черных Холмов», 600, 350, 250); Если я не добавляю «600, 350, 250» или некоторые целые числа, я получаю сообщение об ошибке и не компилируется.
Вот код для суперкласса:
public class Book
{
private String title;
private int pages;
public Book(String title, int pages)
{
this.title = new String(title);
setPages(pages);
}
public void setPages(int pages)
{
this.pages = pages;
}
public int getPages()
{
return pages;
}
public void print()
{
System.out.print(title + " has " + pages + " pages");
}
}
Вот мой ребенок класс.
public class Phone extends Book
{
private int yellowPages = 250;
private int whitePages = 350;
public Phone (String title, int pages, int whitePages, int yellowPages)
{
super(title, pages);
this.whitePages = whitePages;
this.yellowPages = yellowPages;
pages = whitePages + yellowPages;
}
public void print()
{
super.print();
System.out.println(", " + yellowPages + " yellowPages, " + "and " +
whitePages + " whitePages.");
}
}
Вот мой класс драйвера.
public class PolyMain
{
public static void main(String [] args)
{
Book [] library = new Book [5];
library[0] = new Novel("Jaws", 300, 15);
library[1] = new Almanac("New World ", 100, 50);
library[2] = new Novel("Animal Farm ", 250, 9);
library[3] = new Phone("Black Hills Directory ", 600, 350, 250);
listBooks(library);
}
static void listBooks(Book [] library)
{
for (int i = 0; i < library.length && library[i] != null; i++)
library[i].print();
}
}
Вы, кажется, чтобы быть на правильном пути, но вам не нужен параметр '600' /' pages', потому что в конструкторе вы можете вызвать 'super (title, whitePages + yellowPages)'. –
@Ken Y-N. Спасибо за указатель, но я не совсем понял. Если я вытащу «600/350/250 /» из объекта, я получаю сообщение о том, что мой метод «Телефон» настроен на «string, int, int, int». Кажется, я попал в ловушку 22. Если я изменю телефон, это испортит PolyMain, и я не могу изменить PolyMain без изменения телефона. Независимо от того, как я его редактирую, я получаю ошибки. Вы можете объяснить? Пожалуйста и спасибо! – HerdingDogRescuer