иерархия пакета
Хочу для себя реализовать пакет "постройки". Что должно быть в пакете. Я читал и представляю себе так что должен быть абстрактный класс "дом", наследующие классы "замок" "высотка" "коттедж" и интерфейс "информация" который будет описывать функционал этих построек. Подскажите в правильном направлении иду или нет. Не могу найти нормальные примеры а те которые немного подходят просто копирую но понимания нет. Если возможно скажите кратко какие поля и методы должны быть реализованы в каждом классе и в интерфейсе.
Ответы (1 шт):
Начните так
abstract Building { ... }
class Castle extends Building { ... }
class Appartment extends Building { ... }
class Tower extends Building { ... }
Идея абстракции - вы уходите от специфики и выделяете только общие моменты присущие всем.
Строение -> Гараж, Дом, ....
А если идти по принципам SOLID чтобы быть правильным то
L - Принцип подстановки Барбары Лисков
Этот принцип является важнейшим критерием для оценки качества принимаемых решений при построении иерархий наследования. Сформулировать его можно в виде простого правила: тип S будет подтипом Т тогда и только тогда, когда каждому объекту oS типа S соответствует некий объект oT типа T таким образом, что для всех программ P, реализованных в терминах T, поведение P не будет меняться, если oT заменить на oS.
Более простыми словами можно сказать, что поведение наследующих классов не должно противоречить поведению, заданному базовым классом, то есть поведение наследующих классов должно быть ожидаемым для кода, использующего переменную базового типа.
Читая данное утверждение особо-то и создавать и наследовать много классов то и не хочется.
Ещё пару слов про интерфейсы. В них обычно выносят методы классов которые не возможно наследовать по принципу Лисков.