Надеюсь, не слишком академично ...
Допустим, мне нужны реальные и комплексные числа в моей библиотеке SW.
На основе отношения is-a (или здесь ) действительное число представляет собой комплексное число, где b в мнимой части комплексного числа просто 0.
С другой стороны, моя реализация состояла бы в том, что этот дочерний объект расширяет родительский, поэтому в родительском RealNumber у меня будет реальная часть, а дочерний ComplexNumber добавит воображаемую графику.
Также есть мнение, что наследство это зло .
Я помню, как вчера, когда я изучал ООП в университете, мой профессор сказал, что это не очень хороший пример наследования, поскольку абсолютное значение этих двух значений вычисляется по-разному (но для этого у нас есть метод перегрузки / полиморфизм, верно?) .. ,
Мой опыт показывает, что мы часто используем наследование для решения DRY, в результате чего у нас часто возникают искусственные абстрактные классы в иерархии (у нас часто возникает проблема с поиском имен, поскольку они не представляют объекты из реального мира).