Унаследовать статическую переменную на Java
-
29-09-2019 - |
Вопрос
Я хочу иметь следующую настройку:
abstract class Parent {
public static String ACONSTANT; // I'd use abstract here if it was allowed
// Other stuff follows
}
class Child extends Parent {
public static String ACONSTANT = "some value";
// etc
}
Возможно ли это на Java? Как? Я бы предпочел не использовать переменные экземпляра/методы, если смогу избежать этого.
Спасибо!
РЕДАКТИРОВАТЬ:
Константа - это имя таблицы базы данных. Каждый дочерний объект - это мини.
Решение
Вы не можете сделать это именно так, как хотите. Возможно, приемлемым компромиссом будет:
abstract class Parent {
public abstract String getACONSTANT();
}
class Child extends Parent {
public static final String ACONSTANT = "some value";
public String getACONSTANT() { return ACONSTANT; }
}
Другие советы
В этом случае вы должны помнить, что в Java вы не можете переопределить статические методы. То, что случилось, это скрыть материал.
Согласно коду, который вы поместили, если вы сделаете следующие вещи, ответ будет нулевым
Parent.ACONSTANT == null ; ==> true
Parent p = new Parent(); p.ACONSTANT == null ; ==> true
Parent c = new Child(); c.ACONSTANT == null ; ==> true
Пока вы используете родитель в качестве эталонного типа Aconstant, будет нулевым.
Давайте сделаем что -то подобное.
Child c = new Child();
c.ACONSTANT = "Hi";
Parent p = c;
System.out.println(p.ACONSTANT);
Выход будет нулевым.
Не связан с StackOverflow