Наследственный Полиморфизм Вопрос - PullRequest
0 голосов
/ 20 декабря 2010
Person studentA = new Student();

Person - это базовый класс. Student - это подкласс Person.

Зачем кому-то использовать приведенную выше строку кода?Почему бы тебе просто не сделать

Student studentA = new Student();

Ответы [ 2 ]

2 голосов
/ 20 декабря 2010

Иногда вы хотите сослаться на объект в более общем смысле.Большинство людей понимают пользовательские интерфейсы, поэтому вот базовый пример:

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

Вы можете написать код, подобный следующему:

foreach(Control c in MyForm.Controls)c.Enabled = false;

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

Одним из мест, где можно увидеть большинство объектно-ориентированных библиотек базовых классов, использующих этот метод, является ввод-вывод - все библиотеки ввода и вывода доступны.В самом абстрактном смысле у вас будет Stream, но когда вы посмотрите на иерархию классов, вы увидите полиморфные вариации концепции Stream: файловый поток, сетевой поток и так далее.Чтение и запись потоковых реализаций будут выполняться с помощью «Readers» и «Writers» соответственно.Выполнение некоторых основных задач программирования даст вам действительно хорошее представление о том, насколько полезен этот полиморфизм.Например, написание кода, который читает из потока, а затем абстрагирует его, чтобы он мог применяться к любой реализации потока, которую он передает.

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

0 голосов
/ 20 декабря 2010

Вы действительно никогда бы этого не сделали. Но что, если у вас есть вектор Person, и вы хотите указать, что некоторые из людей, которых вы добавляете, являются студентами?

Вы, вероятно, должны прочитать о наследовании и полиморфизме. Ваш вопрос показывает, что вам действительно не пришлось много программировать.

Это первая ссылка, которую я снял с Google. http://msdn.microsoft.com/en-us/library/27db6csx%28v=vs.80%29.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...