Получить доступ к переменной из класса наследника

129
17 февраля 2021, 14:50

Мне нужно записать переменную page из класса bumaga в массив All чтобы потом её вывести.Как это сделать с помощью get и set?

package booka;
import java.util.Scanner;
public class Book {
    public String name;
    public String author;
    static Scanner scan = new Scanner(System.in);
    public Book(String name, String author) {
        this.name = name;
        this.author = author;
    }
    public String toString() {
        return "Book:"+name+", "+author;
    }
    public static void main(String[] args) {
        System.out.println("Name");
        String name = scan.next();
        System.out.println("Author");
        String author = scan.next();
        String page = scan.next();
        Book all = new Book(name, author); //массив
        Book[] array = { all };
        System.out.println(all);
    }
}
package booka;
public class bumaga extends Book {
    String page;
    public bumaga(String Name, String Author, String page) {
        super(Name, Author);
    }
    public String getPage() {
        return this.page;
    }
}
Answer 1

У вас какие-то проблемы с пониманием того, что вы делаете, отсюда и вопрос возник. В вашей иерархии бумага - наследник книги. Суть наследования в том, что наследник обладает свойствами родителя, плюс дополняется своими свойствами. Бумага же не обладает никакими свойствами книги (вот на свой код взгляните, у вас у бумаги получается есть имя и автор, у каждого листика, вроде довольно абсурдно, учитывая что вы её используете как страницу книги?). Соответственно наследовать бумагу от книги - неверно.

В вашем случае наследование можно применить разве что к бумаге и странице. Бумага - родитель, страница - наследник. Просто на бумаге может быть что угодно написано или нарисовано, а на странице должен быть упорядоченный текст, номер страницы например.

А класс книги внутри себя должен содержать массив страниц.

Ну и, собственно, отвечая на вопрос из заголовка: "Получить доступ к переменной из класса наследника", я так понимаю получить доступ к переменной наследника из класса-родителя? Это прямо противоречит принципу наследования, родитель ничего не должен знать о полях своих наследников.

UPD. ответ на вопрос из комментария:

Book[] books = new Book[2];
books[0] = new EBook();
books[1] = new PaperBook();
READ ALSO
Возможно ли boolean перевести в int

Возможно ли boolean перевести в int

Возможно ли boolean перевести в int для сортировки с помощью Comparable

102
Scheduled tasks в java

Scheduled tasks в java

Есть SpringBoot app, и есть задача: организувать список задач которые будут запускаться в определенное время

137
Synchronized-блок Java

Synchronized-блок Java

Есть два класса

103
Добавить в объект такую часть кода

Добавить в объект такую часть кода

Нужно выводить изображение на канвасе через объект, все изображения необходимо добавить в объектПоскажите, как это сделать?

93