&Перегрузка
Материал из ТХАБ.РФ
Перегрузка методов
Перфолента.Net - язык со статической типизацией. Поэтому каждый параметр метода имеет строго заданный тип. Но что делать, если метод должен принимать значения нескольких типов?
Существует 3 варианта решения:
- Создать несколько методов с различными именами, включающими имя принимаемого типа. Например, ЗаписатьЦелое(Ц тип Целое), ЗаписатьЧисло(Ч тип Число), ЗаписатьСтроку(Стр тип Строка). Такой способ применяется в языке 1С, т.к. в нем нет перегрузки методов.
- Создать один метод принимающий параметр типа Объект. Например, Записать(О тип Объект).
- Создать несколько методов с одним именем, но с параметрами разного типа. Именно этот способ называется перегрузкой методов.
Модуль МойМодуль
//перегруженные методы имеют одинаковое имя, но различные наборы параметров //атрибут Перегрузка не обязательный
&Перегрузка Процедура Записать(Ц тип Целое) //код метода КонецПроцедуры
&Перегрузка Процедура Записать(Ч тип Число) //код метода КонецПроцедуры
&Перегрузка Процедура Записать(Стр тип Строка, ВВерхнемРегистре тип Булево) //код метода КонецПроцедуры
КонецМодуля
Хотя атрибут Перегрузка не является обязательным, в некоторых случаях его хорошо бы указать. Например, если перегруженные методы находятся далеко друг от друга или имеют много кода. Атрибут Перегрузка сразу скажет человеку, читающему код, что есть и другие методы с таким же именем, но принимающие другой набор параметров.
Возвращаемое функцией значение не учитывается при перегрузке методов, поэтому в методе не может быть 2-х функций, отличающихся только возвращаемым значением.