Есть абстрактный класс и в нем поле. Как в абстрактном классе добиться того, чтобы в классах наследниках мы были вынуждены задавать значение этого поля?
Ответ
На мой взгляд способ самый очевидный - через параметры конструктора абстрактного класса:
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;
}
}
Комментариев нет:
Отправить комментарий