HTML Diff
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>