Страницы

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

среда, 10 октября 2018 г.

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

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


Ответ

На мой взгляд способ самый очевидный - через параметры конструктора абстрактного класса:
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; } }

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

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