Страницы

Поиск по вопросам

понедельник, 9 декабря 2019 г.

Аналог абстрактных полей в Java

#java #ооп #наследование


Есть абстрактный класс и в нем поле. Как в абстрактном классе добиться того, чтобы
в классах наследниках мы были вынуждены задавать значение этого поля?
    


Ответы

Ответ 1



На мой взгляд способ самый очевидный - через параметры конструктора абстрактного класса: abstract class Foo { private int var; Foo(int var) { this.var = var; System.out.println("var = " + var); } } И наследник: class Bar extends Foo { Bar() { super(42); } } так же возможно объявлять методы абстрактными и использовать их в вашем классе: abstract class Foo { Foo() { int var = getVar(); System.out.println("var = " + var); } abstract int getVar(); } тогда тому кто будет реализовывать этот класс будет придется реализовать и этот метод: class Bar extends Foo { int getVar() { return 42; } }

Ответ 2



Для этого можете создать абстрактный метод. void init() { System.out.println(getName()); } protected abstract String getName();

Комментариев нет:

Отправить комментарий