пʼятницю, 21 червня 2013 р.

Java: параметри по-замовчуванню

     Java, на відміну від С++, не дозволяє створювати методи із параметрами по-замовчуванню.

     Наприклад в С++ ви можете записати:

void MyFunction (String param1, int param2, bool param3=false);

     В цьому випадку третій параметр є необов"язковим, і якщо його не задавати, то функція візьме значення по-замовчуванню, яке присвоєне в оголошенні функції (в даному прикладі - param3=false) .

     Але в Java подібний код неможливий. Якщо ж ми все таки хочемо створити щось подібне, то треба або просто в тілі метода присвоїти бажане значення, або викликати перезавантажений аналог цього метода за допомогою ключового слова this:

public MyFunction(String param1, int param2)
{
    this(param1, param2, false);
}

      this викличе перезавантажений метод з трьома вхідними параметрами:
public MyFunction(String param1, int param2, boolean param3)
{
    .......
}
      Власне ця заборона на використання параметрів по-замовчуванню була зроблена для можливості однозначного виклику перезавантажених функцій. Бо якщо, наприклад, клас має перезавантажений метод, один з варіантів якого має три параметри, другий - два, а третій два і один по-замовчуванню, то якби можна було не вказувати у виклику параметр по-замовчуванню, який варіант компілятор повинен вибрати?