Подмножество против подтипа в ООП

Если «A» является подтипом «B», это означает, что «A» наследует все поля и методы «B» и в дополнение к этому «A» имеет свои собственные методы и поля. Итак, «А» следует рассматривать как надмножество «В»? Насколько действительна интерпретация подмножества подтипов? Разве не должно быть наоборот?

Но опять же, если есть два класса «Автомобили» и «Транспортные средства», имеет смысл, что множество «Автомобили» является подмножеством множества «Транспортные средства». Однако поля и методы «Автомобилей» являются надмножеством «Транспортных средств». Так что я немного смущен по этому поводу.


person Corleone    schedule 07.12.2015    source источник
comment
Я бы сказал, надмножество полей, подмножество экземпляров.   -  person usr    schedule 08.12.2015
comment
На этот вопрос есть более подробные ответы здесь: stackoverflow.com/q/2304341/6651650   -  person Paul Wintz    schedule 22.06.2021


Ответы (1)


Когда-то были некоторые разногласия по поводу того, что должно быть «суб» в отношениях. Это одна из основных причин, по которой C++ использует термины «базовый класс» и «производный класс» вместо «суперкласс» и «подкласс». Страуструп хотел избежать всего вопроса.

Но, чтобы отразить то, что @usr сказал в комментариях, война терминологии улеглась за эти годы, и общепринято, что «подмножество экземпляров» обозначает «подкласс».

person Daniel T.    schedule 12.12.2015