Step 2 (S-10674)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/554/step/2

Step 2 (S-10674) 1.png

[00:00 - 00:16] теперь давайте поговорим переопределение методов приносила переопределение методов отличается от перегрузки тем что при перегрузке определяет методы с тем же именем на другой сигнатуры а 3 для определения мы


Step 2 (S-10674) 2.png

[00:16 - 00:35] определяет метод с тем же именем и тоже сигнатуре что и метод из базовых классов для того чтобы определить этот метод подругу давайте рассмотрим это на следующем примере пусть нас есть некоторый базовый класс прошлом описывающий человека в эту базу осыпался несметным который защищает строчку с 1 человеком


[00:35 - 00:51] и рассмотрим некоторые производные класс профессора который описывает человека со званием профессора как вы знаете уважительное обращение к человеку звание профессора начинается обычно со слова профессора поэтому мы определим метод name


[00:51 - 01:06] с той же сигнатура переопределить метод у наследной из базовых классов внутри класса профессор таким образом чтобы имя человека возвращалась с приставкой профессор мы будем возвращать имя начинающееся приставки профессор и добавлять непосредственными человек


[01:06 - 01:22] для того чтобы получить имя человека в производном классе мы обратимся к методу из базового класса здесь мы явно укажем что мы хотим вызвать метод нэйм из базового класса образом будет вызван метод унаследованных базовый класс


[01:22 - 01:40] теперь если мы создадим переменную типа профессор и обратимся к нет то конечно будет вызван метод name is производного класса то есть вот наш переопределенный метод name и таким образом мы уважительно обратимся к профессору


[01:40 - 01:55] если же теперь пытаемся обратиться к этому методу через указатель на базовый класс то есть мы создадим указатель типа прошлом проинициализирован его адресом переменной которая хранится


[01:55 - 02:11] объект профессор и попытаемся обратиться к методу н то будет вызван метод нэйм из класса то есть на выходе мы получим не уважительном обращении профессора в труппу без указания того что он профессор


[02:11 - 02:30] как так получилось дело в том что при вызове метода ним через указатель на базовый класс будет передана перегрузка в процессе который будет рассматриваться только те методы которые определены в классе просто потому что проф класс профессора о


[02:30 - 02:47] поэтому в результате этой перегрузки будет выбран наиболее подходящее функционал точнее метод метод и в куске кода который будет соответствовать этому вызову будет подставлен конкретный адрес


[02:47 - 02:50] методы и способы хороши