Можно ли инициализировать последний член абстрактного базового класса с помощью абстрактного метода?JAVA

Программисты 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 или это очень плохая идея?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»