Логотип ConstructiCat
CodeBust.
Навигация по разделу ▾

Отказ от наследства.

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

##Признаки и симптомы

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

class Square extends Rectangle {
  void setWidth(int w) { throw new UnsupportedOperationException(); }
  void setHeight(int h) { throw new UnsupportedOperationException(); }
}

##Причины проблемы

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

##Лечение

##Результат

  • Улучшает понимание и организацию кода. Теперь вы не будете тратить время на догадки о том, почему класс Стул унаследован от класса Животное (несмотря на то, что оба имеют четыре ноги).