ym104432846
Вставьте ссылку на видео из Youtube, Rutube, VK видео
Задайте вопрос по видео
Что вас интересует?
00:00:15
Перегрузка методов в C#:
  • Перегрузка методов позволяет создавать несколько методов с одинаковым названием, отличающихся количеством и типами параметров
  • Пример перегрузки конструкторов в классе "робот"
  • Создание статического метода Multiply для демонстрации перегрузки
  • Реализация трех версий метода Multiply с разным количеством и типами параметров
  • Использование перегруженных методов в классе Robot для установки значений свойств
  • Возможность создания множества перегрузок одного метода для удобства использования
0: Привет. В ходе этого видео мы с вами поговорим относительно того, что такое перегрузка методов в языке сишарп. А перед началом я бы хотел порекомендовать сайт it прокер точка ком. На этом сайте вы найдёте код, домашние задания и много другой полезной информации. Ссылка на этот урок на сайте бу.
1: В описании к этому видео переходите, не пожалеете за счёт перегрузки методов или же за счёт перегрузки функций мы можем создать несколько методов, которые будут иметь одно и то же самое название. Вот только количество принимаемых параметров будет отличаться нам
2: Это позволит сделать то, что мы сможем обращаться по 1 и тому же самому имени к определённому методу или же функции. При этом каждый раз мы будем передавать разное количество параметров. Это достаточно удобно, потому что нам не нужно запоминать много названий для разных функций.
3: А нам нужно просто всегда обращаться к 1 и той же самой функции. Ну и просто будем передавать разное количество параметров. Мы подобный функционал уже с вами на самом то деле делали, например, мы с вами выполняли перегрузку конструкторов. И если вот мы зайдём, например, в тот же самый основной наш
4: Робот, то здесь мы заметим, что у нас есть аж целых 3 конструктора и все эти конструкторы, они имеют одно и то же самое название. Единственное, что здесь отличается, так это количество передаваемых параметров. Ну и в зависимости от того, сколько параметров мы будем
5: Передавать. При создании объекта у нас вызывается разный конструктор. Точно такой же функционал мы можем прописывать при разработке обычных методов. Вот для начала мы давайте зайдём в основной наш класс. Здесь я предлагаю закомментировать полностью весь код. Кстати, чтобы быстро комменти,
6: Можете нажимать на команд и smash. Если вы на маке либо же контрол и smash. Если вы на windows и здесь, мы давайте попробуем с вами создать как раз перегрузку методов. А чуть позже мы такую же перегрузку реализуем уже внутри какого-либо класса, ну, например, внутри класса робот для
7: Начала мы давайте здесь пропишем, что мы создаём некий новый метод, он у нас будет статичным, потому что я хочу, чтобы я имел доступ к этому методу прямиком из метода main. Соответственно, чтобы иметь прямой доступ к этому методу, мне нужно прописать для него ключ.
8: Ключевое слово static. Тем самым я говорю, что этот метод, он будет принадлежать ко всему классу, дальше мы давайте укажем здесь Войт, то есть ничего этот метод возвращать не будет, хотя на самом то деле он может что-то и возвращать, это также вся эта технология также здесь будет работать корректно, ну и
9: И сам метод, он пускай будет называться как multiply, то есть он будет принимать несколько параметров и будет их просто перемножать между собой. Например в 1 очередь у нас этот метод, он пускай будет принимать лишь 2 параметра, а а также параметр б. Следующее, что я хочу
10: Сделать так это вот здесь мы будем с вами создавать некую новую, ещё переменную, она пускай будет называться res и здесь мы будем делать следующее. Мы 1 параметр будем умножать на 2 параметр и соответственно, это все будем просто выводить в консоль, поэтому систем консол рай
11: Line и здесь будем писать что-то в духе резалт, ну и соответственно, будем добавлять ещё сюда саму эту переменную res. Теперь я могу спокойно вызвать сам этот метод. Для этого я обращаюсь к мультиплай, ну то есть к методу по его названию и передаю 2 значения. Можно, конечно же,
12: Отдельные переменные создать, но мы давайте прямиком вот здесь будем передавать все эти значения и теперь можно это ещё было бы запустить, дабы это все протестировать. На данный момент мы ничего с вами такого кардинального не сделали. То есть у нас есть самый стандартный метод, он принимает просто 2 параметра.
13: Соответственно, перемножает эти параметры и выводит результат. В моём случае получилось число 30, что вполне себе логично. Теперь давайте выполним перегрузку этого метода. Для того, чтобы её выполнить, нам, по сути нужно создать точно такой же метод с точно таким же названием. Вот только
14: Количество параметров мы теперь меняем. Во первых, мы можем просто добавить какой-то 1 дополнительный параметр или же даже несколько дополнительных параметров или же наоборот мы можем удалить 1 параметр. В таком случае это уже у нас будут 2 раз. Ну это уже 2 разные функции будут, потому что это
15: Функция, она принимает 2 параметра. Эта функция, она принимает 1 параметр. Также мы можем поменять типы данных для этих параметров. И в таком случае это тоже будут как будто 2 разные функции. Вот например сейчас я создал то, что у нас есть, что у нас есть функция, которая точно
16: Также называется, она тоже принимает 2 параметра. Вот только теперь тип данных у этих параметров он уже другой, а соответственно, теперь, при вызове определённой функции, при вызове функции multi плай. И в зависимости от того, будем, будем ли мы передавать тип данных integer или же
17: Будем передавать тип данных float, у нас будут вызываться разные функции. И вот даже сейчас мы это можем с вами протестировать. На данный момент мы вызываем функцию multiply и передаём туда целые числа. По этой причине у нас выбирается именно та функция, которая принимает именно целые числа, но
18: Если я здесь укажу уже числа с точкой и укажу, что это как бы у нас будут именно типы данных флот, то в таком случае у меня не вызывается никакая ошибка. Я обращаюсь точно по тому же самому имени, но при этом у меня уже будет вызываться 2 наша функция, которая при
19: 2 параметра. И оба этих параметра они идут с типом данных float. И вот подобные перегрузки, они в языке сишарп используются, ну просто постоянно, например, когда мы с вами говорим про console riteline, мы сюда тоже, мы сюда можем передать, либо просто строку.
20: Либо я сюда могу передать число 3, например, и это тоже будет выведено корректно, либо я могу сюда передать некий флот. И это также здесь будет корректно выведено. То есть, по сути, вот эта вот функция write line, она тоже имеет множество переопределений, и она может принимать как
21: Строку так и целое число, так и тип данных float double и так дальше то есть там точно такие же переопределения перегрузки прописаны как вот мы с вами сейчас как раз и реализовываем таким образом вы можете создать хоть 20 функций, которые будут идти с 1 и тем же самым.
22: Именем. И если у всех этих функций будет либо разное количество получаемых параметров, либо если у них будет разные типы данных для всех этих параметров, то в таком случае каждая функция, она будет как отдельная функция идти и, соответственно, при переда
23: Параметров будет подбираться именно та функция, именно тот метод, который соответствует самим тем параметрам, которые будут передаваться внутрь самой этой функции. Ну вот мы на данный момент прописали лишь 2 функции. На самом то деле я могу прописать здесь и какую-то 3 функцию
24: Например, она будет принимать у меня пускай лишь 1 параметр. И здесь мы допустим этот параметр будем всегда просто на 2 умножать. И в таком случае, опять же, это будет наша 3 функция, наш 3 метод, который также корректно будет работать. Ну и все эти функции спокойно могу вызы
25: Например, давайте вот мы обратимся ещё раз к мультиплай и как видите, вот здесь у меня даже есть подсказка 1 из 3. То есть я могу передать 3 разных варианта параметров. 1 вариант это когда я передаю 2 интеджер, то есть 2 параметра, и это
26: 2 целых числа. 2 параметр. 2 случай. Как я могу передать данные, это я передаю тоже 2 параметра, но оба параметра это флот и 3 случай. Как я могу передать данные, так это просто будет 1 параметр. И этот 1 параметр это будет число с
27: Точкой, да, вот такие вот 3 перегрузки у нас на данный момент есть. Также давайте рассмотрим более практичный способ применения всех этих перегрузок. Для этого я предлагаю зайти в класс робот и здесь мы тоже можем выполнять перегрузку различных методов. Выполняется она точно так же само, как
28: И в нашем классе программ. И, например, я хочу выполнить перегрузку такого метода, как сет вельюс. На данный момент мы с вами при вызове этого метода всегда переедаем 3 параметра. И все эти 3 параметра мы устанавливаем. В то же время я бы хотел выполнить, например, пере,
29: Грузку этого метода. И, допустим, я буду передавать 1 лишь параметр, и именно только 1 этот параметр я и буду устанавливать, а также будет возможность для передачи 2 параметров. Ну только, наверное, давайте я лучше вот эту вот, вот этот метод скопирую. Так вот будет возможность для пере.
30: Передачи 2 параметров и, соответственно, 2 этих параметра я и буду устанавливать. Вот, например, у меня уже есть 3 перегрузки, да, 3 метода, которые называются, ну, которые идут с 1 и тем же самым именем. И теперь, что я могу сделать? Я могу, например, обратиться. Давайте это тоже, наверное,
31: Закомментируем, я могу, ну, по сути, мне нужно единственное, создать, наверное, объект все-таки на основе дочернего класса, да, потому что класс робот, он у меня до сих пор является абстрактным, поэтому на его основе ничего создать не могу. Поэтому, допустим, я создам на основе класса бот некий объект.
32: И дальше вот я обращаюсь к бот 1, обращаюсь к методу сет вельюс, я к нему спокойно могу обратиться, потому что, ну, потому что мы наследуем все эти методы из родительского класса и как видите, тут у меня тоже есть 3 перегрузки. Получается, я могу передать либо сразу
33: Сразу 3 параметра, да, это название, это вес. А также это координаты или же я могу передать только 2 параметра. Это название и вес. Или я могу передать только 1 параметр. Это просто будет название. Если хотите, можете ещё больше выполнить здесь различных перегру.
34: И в таком случае вы будете устанавливать, ну, допустим, вот давайте мы даже ещё 1, возможно, перегрузку сделаем. И в таком случае я, допустим, буду устанавливать не имя, а буду устанавливать исключительно только вес, например, да, если я сейчас попробую ещё раз посмотреть, то у меня
35: Уже здесь есть 4 перегрузки и вот 4 перегрузка это когда я могу установить только вес, да, без имени и без координат. Таким вот образом как раз и происходит перегрузка методов это достаточно простая в реализации концепция, но при этом эта концепция невероятно
36: Важна и невероятно удобна. Ну что же, на этом наш урок подходит к концу. В этом уроке мы изучили с вами, что такое перегрузка, как её использовать и зачем она вообще нужна. Надеюсь, урок вам понравился. Если так, то не забывайте подписываться на