Урок 19. Перегрузка методов в Java

Как мы уже с вами могли понять, методы – серьезный инструмент в Java и одной темой всё не охватить. Мы уже можем использовать те знания, которые получили о методах для улучшения нашей игры, однако есть еще одна небольшая теоретическая часть, требующаяся для еще большего понимания возможностей Javaперегрузка методов.

 

Сейчас мы с вами увидим, что можем создать несколько методов с одним и тем же именем, но с разными (по типу данных, по количеству) параметрами. Код в этом проекте окажется даже проще, чем в предыдущем:

  • Создайте новый пустой проект и назовите его «Exploring method overloading»;
  • Первый метод, который мы с вами напишем будет иметь имя printStuff и будет принимать в качестве параметра одну переменную типа int. Скопируйте или напишите код, написанный ниже сразу же после закрывающейся фигурной скобки метода onCreate, но перед закрывающейся фигурной скобкой нашего класса MainActivity. Импортируйте недостающие классы – об этом вам напомнит Android Studio;
    void printStuff(int myInt){
         Log.i("info", "This is the int only version");
         Log.i("info", "myInt = "+ myInt);
    }
  • Давайте напишем еще один метод с именем printStuff, но на этот раз он будет принимать в качестве параметра переменную типа String. Скопируйте или напишите следующий код после закрывающейся фигурной скобки метода onCreate, но перед закрывающейся фигурной скобкой нашего класса MainActivity:
    void printStuff(String myString){
         Log.i("info", "This is the String only version");
         Log.i("info", "myString = "+ myString);
    }
  • И снова мы создадим метод с именем printStuff, и снова с другими параметрами, на этот раз он будет принимать две переменные: одну типа int и одну типа String. Скопируйте или напишите следующий код после закрывающейся фигурной скобки метода onCreate, но перед закрывающейся фигурной скобкой нашего класса MainActivity:
    void printStuff(int myInt, String myString){
         Log.i("info", "This is the combined int and String version");
         Log.i("info", "myInt = "+ myInt);
         Log.i("info", "myString = "+ myString);
    }
  • Теперь напишите следующий код прямо перед закрывающейся фигурной скобкой метода onCreate для вызова всех методов, которые мы только что создали:
    //объявляем и инициализируем наши переменные
    int anInt = 10;
    String aString = "I am a string";
    //вызываем различные версии нашего метода printStuff
    //имя метода одно и тоже, а вот параметры разные
    printStuff(anInt);
    printStuff(aString);
    printStuff(anInt, aString);
  • Запустите приложение на эмуляторе или устройстве и посмотрим, что нам вывела консоль (так как именно туда мы и просим выводить информацию Android Studio):
  • Вот, что должно получиться:

android studio console log

Как видно из результата, Java обработал три метода с одинаковым именем как абсолютно разные методы. И все потому что у этих методов различны параметры. Это и есть перегрузка методов.

 
Не запутайтесь в дальнейшем в понятиях Перегрузка и Переопределение: это два разных понятия в Java:

Перегрузка происходит, когда у нас есть несколько методов с одинаковыми именами, но разными параметрами.

Переопределение же происходит, когда мы, по сути, меняем метод с тем же именем и теми же параметрами.

Давайте подробнее рассмотрим код, который мы написали:

Пошагово мы создали три метода с одинаковыми именами, но различными параметрами:

void printStuff(int myInt){
...
}
void printStuff(String myString){
...
}
void printStuff(int myInt, String myString){
...
}

В теле каждого цикла код достаточно прост для понимания. Он попросту выводит в консоль Android Studio переданные параметры и информацию о том, какой метод работает.

Следующая важная часть кода заключается в том, что мы ясно даём понять Android Studio, какой метод мы вызываем, используя соответствующие параметры:

printStuff(anInt);
printStuff(aString);
printStuff(anInt, aString);

 
Теперь наших знаний о методах, циклах и случайных числах более, чем достаточно для внесения некоторых улучшений в нашу игру. В следующем уроке этим и займёмся. Также можете скачать и посмотреть полный код для проекта данного урока, чтобы удостовериться, что вы все делаете верно.

Скачать исходники