Используйте метод вместо поля (переменной):
public abstract class Parent {
public String getName() {
return "the parent";
}
}
public class Child1 extends Parent {
public String getName() {
return "Jon";
}
}
public class Child2 extends Parent {
public String getName() {
return "Mary";
}
}
В Java, по крайней мере, вы можете переопределять только методы, а не переменные.
Другим вариантом было бы, чтобы конструктор Parent принял имя в качестве параметра. Если вы сделаете это, лучше всего, если Parent
является абстрактным и все конструкторы принимают параметр name. Затем подклассы должны передать имя, что обычно делается примерно так:
public class Child1 extends Parent {
public Child1() {
this("Jon");
// ...
}
}
На самом деле, даже с подходом переопределения методов, было бы хорошо, если Parent
является абстрактным, поэтому вы можете сделать getName()
абстрактным.