0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>В программировании большое количество функций и методов имеют параметры, которые редко меняются.</p>
1
<p>В программировании большое количество функций и методов имеют параметры, которые редко меняются.</p>
2
<p>В таких случаях этим параметрам задают<strong>значения по умолчанию</strong>, которые можно поменять по необходимости. Этим немного сокращается количество одинакового кода.</p>
2
<p>В таких случаях этим параметрам задают<strong>значения по умолчанию</strong>, которые можно поменять по необходимости. Этим немного сокращается количество одинакового кода.</p>
3
<p>Это наглядно видно на таком примере:</p>
3
<p>Это наглядно видно на таком примере:</p>
4
<p>В отличие от других языков, в Java нет возможности задать значение по умолчанию, но ее можно имитировать с помощью<strong>перегрузки методов</strong>.</p>
4
<p>В отличие от других языков, в Java нет возможности задать значение по умолчанию, но ее можно имитировать с помощью<strong>перегрузки методов</strong>.</p>
5
<p>Что это такое? Java позволяет создать несколько методов с одинаковым именем. У таких одинаковых методов должно выполняться одно из условий:</p>
5
<p>Что это такое? Java позволяет создать несколько методов с одинаковым именем. У таких одинаковых методов должно выполняться одно из условий:</p>
6
<ul><li>Разные типы входных параметров</li>
6
<ul><li>Разные типы входных параметров</li>
7
<li>Разное количество параметров</li>
7
<li>Разное количество параметров</li>
8
<li>Все перечисленное выше одновременно</li>
8
<li>Все перечисленное выше одновременно</li>
9
</ul><p>Посмотрим на примере метода, складывающего два числа:</p>
9
</ul><p>Посмотрим на примере метода, складывающего два числа:</p>
10
<p>Теперь допишем еще один метод sum(), который принимает только один параметр и складывает его с числом 10:</p>
10
<p>Теперь допишем еще один метод sum(), который принимает только один параметр и складывает его с числом 10:</p>
11
<p>Компилятор без проблем выполнит такой код и создаст два метода с одним именем. Как Java узнает, какой метод нужно использовать?</p>
11
<p>Компилятор без проблем выполнит такой код и создаст два метода с одним именем. Как Java узнает, какой метод нужно использовать?</p>
12
<p>Все очень просто: во время компиляции выбирается та версия метода, которая совпадает по типу и количеству параметров. Если такой метод не был найден, то возникнет ошибка.</p>
12
<p>Все очень просто: во время компиляции выбирается та версия метода, которая совпадает по типу и количеству параметров. Если такой метод не был найден, то возникнет ошибка.</p>
13
<p>Как минимум с одним перегруженным методом мы уже встречались - это метод substring(). По умолчанию он извлекает подстроку до конца, но ему можно передать второй параметр, который ограничит длину:</p>
13
<p>Как минимум с одним перегруженным методом мы уже встречались - это метод substring(). По умолчанию он извлекает подстроку до конца, но ему можно передать второй параметр, который ограничит длину:</p>
14
<p>Перегрузка методов может приводить к дублированию кода, особенно когда речь идет про значения по умолчанию. В таких ситуациях логика одинаковая, разница лишь в начальной инициализации.</p>
14
<p>Перегрузка методов может приводить к дублированию кода, особенно когда речь идет про значения по умолчанию. В таких ситуациях логика одинаковая, разница лишь в начальной инициализации.</p>
15
<p>Для снижения дублирования достаточно сделать два шага:</p>
15
<p>Для снижения дублирования достаточно сделать два шага:</p>
16
<ul><li>Сначала определить общий метод, который принимает больше всего параметров</li>
16
<ul><li>Сначала определить общий метод, который принимает больше всего параметров</li>
17
<li>Затем вызывать его из тех методов, где есть значения по умолчанию</li>
17
<li>Затем вызывать его из тех методов, где есть значения по умолчанию</li>
18
</ul><p>В коде это выглядит так:</p>
18
</ul><p>В коде это выглядит так:</p>
19
<p>В этом примере мы не сократили код, но он наглядно показывает принцип, описанный выше.</p>
19
<p>В этом примере мы не сократили код, но он наглядно показывает принцип, описанный выше.</p>