Поля интерфейса

#java #polymorphism #abstraction

Вопрос:

Во-первых, в настоящее время я понимаю, что поля интерфейса являются статическими конечными в своей реализации.

Мое текущее понимание заключается в том, что интерфейсы позволяют слабо связанным классам совместно использовать методы с одинаковыми именами, и это весьма полезно. Существует ли стандарт для создания свободных классов для совместного использования полей с одинаковыми именами, но чтобы эти поля не были статическими?

В настоящее время у меня есть группа классов, которые все простираются от одного родительского класса (иногда через несколько дочерних классов). Группа этих дочерних классов должна содержать поле, в то время как другой группе это поле не нужно. Все остальные части родительского класса являются общими для детей.

Комментарии:

1. Почему бы не создать иерархию с двумя промежуточными абстрактными классами между верхним родительским и дочерними классами? Таким образом, два абстрактных класса объявят поля, необходимые каждой группе, и все дочерние классы расширят один из этих абстрактных классов.

2. Похоже, это сработает. Вы бы порекомендовали мне, чтобы оба абстрактных класса расширялись из одного (в значительной степени пустого) класса или чтобы один расширялся из другого?

3. Я думал, вы хотите, чтобы все ваши дочерние классы были подклассами одного и того же родителя. Поэтому я полагаю, что эти два абстрактных класса будут расширять/реализовывать один и тот же интерфейс или один и тот же существующий класс.

4. Кажется, это сработает для моих нужд, огромное спасибо!

Ответ №1:

ernest_k указал, что у вас могут быть два класса, которые выходят из (в значительной степени пустого) класса. Это работает для того, что я ищу.