#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();
Комментариев нет:
Отправить комментарий