Я пытаюсь добиться следующего:
У меня есть родительский класс с некоторой логикой.В дочернем классе я «переопределяю» константы / свойства.Есть ли способ сделать дочерние свойства доступными методами, определенными в родительском классе?Или, если быть более точным, есть ли способ заставить метод "out" написать extended вместо base в следующем примере?
public class BaseTest {
public static final String x = "base";
public void out() {
System.out.println(x);
}
}
public class ExtendedTest extends BaseTest{
public static final String x = "extended";
}
public class Main {
public static void main(String[] args) {
BaseTest base = new BaseTest();
ExtendedTest extended = new ExtendedTest();
base.out(); // base (as expected)
extended.out(); // base (extended expected)
System.out.println(extended.x); // extended (as expected)
}
}
Iпроисходят в основном из мира PHP, где этот подход работает просто отлично.Не знаю, если я что-то упустил или если сам дизайн Java не позволяет этого.
Спасибо.
Примечание: не важно , независимо от того, является ли свойствостатический или нет.Я просто хотел иметь возможность переопределить свойство любого вида в дочернем классе (точно так же, как я могу переопределить метод), которое, на основании ответов, которые я получил до сих пор, не представляется возможным в Java.В PHP это абсолютно возможно, поэтому я и задал вопрос.