Как создать абстрактный класс с полем которое должно быть обязательно нициализировано?
Близко к тому решение...можно объявить конструктор у абстрактного класса и после унаследования обязательно нужно будет вызвать его...собственно там и проинициализируете поле.
public abstract class Animal {
protected String name;
public Animal(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
public class Dog extends Animal {
public Dog(String type) {
super(type);
}
}
public class Application {
public static void main(String[] args) {
Animal animal = new Dog("Aaa");
System.out.println(animal.getName());
}
}
Обязать иниацилизировать поля не выйдет, но подобное можно сделать через абстрактные геттер-функции, например:
abstract class AbstractFooBar {
public abstract String getValue();
}
class MyFoo extends AbstractFooBar {
private static final String VALUE = "Foo";
@Override
public String getValue() {
return VALUE;
}
}
class MyBar extends AbstractFooBar {
private static final String VALUE = "Bar";
@Override
public String getValue() {
return VALUE;
}
}
public class Main {
public static void main(String[] args) throws Exception {
MyFoo foo = new MyFoo();
System.out.println(foo.getValue()); // Foo
MyBar bar = new MyBar();
System.out.println(bar.getValue()); // Bar
AbstractFooBar fooBar = new MyBar();
System.out.println(fooBar.getValue()); // Bar
}
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости