Операции с экземплярами/объектами при наследовании в C# | OTUS

Операции с экземплярами/объектами при наследовании в C#

Давайте посмотрим, что получится, если мы попробуем приравнять объект от разных классов друг к другу:

1-1801-963c5d.png

Ничего толкового не выйдет, и мы получим ошибку, причем несмотря на то, что присутствуют одинаковые поля с одинаковыми значениями:

2-1801-38a824.png

Дело в том, что язык программирования C# работает с типами очень четко — программист не может приравнять 2 объекта от двух независимых классов. Но что было бы, если бы класс A наследовался от класса B:

3-1801-5c0b14.png

Скажем так, мы бы продвинулись немного дальше:

4-1801-6fba5e.png

Как уже было сказано выше, C# весьма дотошно и скрупулезно подходит к вопросам типов. Если класс A унаследован от B, значит, он имеет все его методы и поля, поэтому при назначении переменной типа B объекта типа A вы не получите никаких проблем. Но в обратную сторону это работать не будет, ведь в классе B отсутствуют поля и методы, которые могут быть в A.

Что важно запомнить на этом этапе: мы можем назначить переменной родительского типа объект дочернего, но не наоборот.

Итак, теперь у нас есть возможность обмануть правило:

5-1801-53dd27.png

Здесь уже приведение типа сработает, но лишь потому, что классы имеют наследственные отношения. То есть 2 обособленных непримитивных типа вы не сможете привести друг к другу.

Смотрим последний участок кода:

6-1801-091b76.png

И вывод:

7-1801-5cb282.png

Что важно запомнить в итоге: вы можете выполнить конвертацию char в int. Но вы не сможете конвертировать int в char, а причина заключается в том, что диапазон целого числа больше, чем диапазон символа.

По материалам статьи «Diving in OOP (Day 2): Polymorphism and Inheritance (Inheritance)»: https://www.codeproject.com/Articles/772238/Diving-in-OOP-Day-Polymorphism-and-Inheritance.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто