Можно ли инициализировать последний член абстрактного базового класса с помощью абстрактного метода? ⇐ JAVA
Можно ли инициализировать последний член абстрактного базового класса с помощью абстрактного метода?
Интересно, могу ли я инициализировать последнее поле в абстрактном базовом классе результатом абстрактного метода, который будет реализован производным классом. Я понимаю, что производный ctor сначала вызовет базовый ctor, поэтому я гарантирую, что реализация абстрактного метода также будет зависеть только от конечных полей производного класса, определенных при объявлении. Я пробую следующий код, и он работает.
абстрактный класс Base { защищенное окончательное имя строки = callName(); защищенная абстрактная строка callName(); } публичный финальный класс Foo расширяет Base { частный окончательный идентификатор строки = «42»; @Override защищенная строка callName() { return String.format("WithId%s", id); } публичный недействительный дисплей () { System.out.printf("имя: %s\n", name); System.out.printf("id: %s\n", id); } public static void main(String[] args) { вар foo = новый Foo(); Фу.дисплей(); } } Так это законное действие в Java или это очень плохая идея?
Интересно, могу ли я инициализировать последнее поле в абстрактном базовом классе результатом абстрактного метода, который будет реализован производным классом. Я понимаю, что производный ctor сначала вызовет базовый ctor, поэтому я гарантирую, что реализация абстрактного метода также будет зависеть только от конечных полей производного класса, определенных при объявлении. Я пробую следующий код, и он работает.
абстрактный класс Base { защищенное окончательное имя строки = callName(); защищенная абстрактная строка callName(); } публичный финальный класс Foo расширяет Base { частный окончательный идентификатор строки = «42»; @Override защищенная строка callName() { return String.format("WithId%s", id); } публичный недействительный дисплей () { System.out.printf("имя: %s\n", name); System.out.printf("id: %s\n", id); } public static void main(String[] args) { вар foo = новый Foo(); Фу.дисплей(); } } Так это законное действие в Java или это очень плохая идея?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как скрыть метод базового класса из производного класса при вызове внутри базового класса?
Anonymous » » в форуме C# - 0 Ответы
- 57 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как скрыть метод базового класса из производного класса при вызове внутри базового класса?
Anonymous » » в форуме C# - 0 Ответы
- 46 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как скрыть метод базового класса из производного класса при вызове внутри базового класса?
Anonymous » » в форуме C# - 0 Ответы
- 38 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как скрыть метод базового класса из производного класса при вызове внутри базового класса?
Anonymous » » в форуме C# - 0 Ответы
- 38 Просмотры
-
Последнее сообщение Anonymous
-