Я работаю над заданием, которое включает абстрактный класс, который представляет собой общее животное с подклассами для кошки, собаки, рептилии и т. Д. Суперкласс имеет абстрактные методы , которые фактически не используются каждым подклассом. Например, существуют аксессоры и мутаторы для породы и пола, которые используются собакой и кошкой, но не являются классом рептилий. Я лично считаю, что это странная настройка, но это то, что требуется заданием.Работайте над необходимостью переопределять абстрактные методы в Java?
Сначала я попытался оставить абстрактные методы, не используемые в конкретном подклассе, но я быстро обнаружил, что приводит к ошибке из-за того, что абстрактные методы не переопределяются. Все, что я должен был сделать, чтобы исправить это было положить в соответствующих методах ...
public class Reptile extends Animal
...
public void setBreed(String newBreed){}
public String getBreed(){return null;}
... хотя это кажется немного отходов, видя, как они не используются. Это не огромная проблема, но мне было любопытно, есть ли альтернатива тому, чтобы переопределить неиспользуемые абстрактные методы в данном подклассе. Если это не так, существует ли какое-либо соглашение о том, что делать, когда вам нужно переопределить абстрактный метод, но фактически не будет использовать этот метод?
Почему нет реализации по умолчанию для некоторых из добытчиками и сеттеров? Абстрактным классам не нужно, чтобы все методы были абстрактными. (Хотя это может не относиться к вашему конкретному случаю) – Pokechu22
В зависимости от вашего использования интерфейсы могут быть более уместными. Поскольку вы можете реализовать несколько интерфейсов для лучшего определения своего класса. Хотя я не уверен, что это будет разрешено для вашего задания. – Justin
У меня не может быть реализации по умолчанию, потому что назначение специально требует, чтобы я использовал абстрактный метод для методов, которые привели к моему сообщению, хотя это или интерфейсы были бы гораздо более подходящими. – player3