Re[6]: Базовое отличие ООП от ФП
От: Sinclair Россия https://github.com/evilguest/
Дата: 21.05.24 12:20
Оценка:
Здравствуйте, Serginio1, Вы писали:
S> Ну ООП это не только состояние. Но самое главное это наследование полей, свойств методов и их переопределение.
Наследование полей как раз самое неглавное. Например, в COM нет никакого наследования полей, что не мешает ему быть ОО-платформой.

S>VMT! Интерфейсы! Видимость свойств и методов.

VMT — это деталь реализации. Можно строить ООП существенно по-другому.
В том же Object Pascal (aka Delphi) есть две разных VMT.
S> Ref тоже могут быть read only readonly ref
S>Да иногда сложно читать код. Тыкаешь в метод и попадаешь либо в абстрактный либо виртуальный метод. Нужно смотреть реализацию, которая может быть у десятков и сотен классов.
Не в этом дело.
S> Вот в C# для структур нет наследования, хотя могли бы и завести тип структура с VMT как в C++
Нет смысла. Наследование структур в .Net имело бы весьма ограниченную полезность.
Наследование имеет смысл там, где можно выполнять принцип подстановки, а для этого нужна ссылка, а не экземпляр.
То есть, к примеру, не получится объявить var b = BaseStruct[] и положить в него b[0] = new DerivedStruct().
Чтобы это было можно,
а) элементы массива должны быть ссылками
б) в каждой ссылке должна быть информация о типе, чтобы GC мог правильно интерпретировать то, на что она указывает.
Получаем, собсно, reference type aka class.
Весь полиморфизм value-типов, который возможен в рамках управляемой среды, будет жить исключительно на стеке.
То есть там, где можно получить некий ref. И тогда понятно, что можно в качестве ref baseStruct передать ref DerivedStruct.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.