Найти в Дзене
yagdmitrij

Перегрузка и переопределение. Методы с аргументами переменной длины

Продолжаем изучение методов. В этой статье разберем такие понятия как перегрузка и переопределение методов, также рассмотрим методы с аргументами переменной длины. На первом этапе изучения java трудно было понять логику такого подхода. Но с усложнением кода, когда приходилось использовать огромное количество методов схожих по своему функционалу, достоинства перегрузки стала очевидна. Итак, перегрузка - это когда в программе используются несколько методов с одинаковым названием, но с разными типами параметров или с разным их количеством. Если методы выполняют одинаковую функцию, но принимают разные (по типу или количеству) аргументы, то зачем нам использовать разные имена для этих методов. А так - одно имя метода, которое легко запомнить. Перегрузка методов реализует одну из основных концепций java (полиморфизм): один интерфейс – множество методов. Следует учесть, что возврат методами различных типов не будет являться перегрузкой. Еще раз: метод будет считаться перегруженным, если испол

Продолжаем изучение методов. В этой статье разберем такие понятия как перегрузка и переопределение методов, также рассмотрим методы с аргументами переменной длины. На первом этапе изучения java трудно было понять логику такого подхода. Но с усложнением кода, когда приходилось использовать огромное количество методов схожих по своему функционалу, достоинства перегрузки стала очевидна. Итак, перегрузка - это когда в программе используются несколько методов с одинаковым названием, но с разными типами параметров или с разным их количеством. Если методы выполняют одинаковую функцию, но принимают разные (по типу или количеству) аргументы, то зачем нам использовать разные имена для этих методов. А так - одно имя метода, которое легко запомнить.

-2

Перегрузка методов реализует одну из основных концепций java (полиморфизм): один интерфейс – множество методов. Следует учесть, что возврат методами различных типов не будет являться перегрузкой. Еще раз: метод будет считаться перегруженным, если используется одинаковое имя метода, но разные типы ПАРАМЕТРОВ или разное их КОЛИЧЕСТВО. Рассмотрим это в коде:

перегрузка методов java
перегрузка методов java

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

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

перегрузка конструктора
перегрузка конструктора

Переопределение метода java. По-хорошему сначала нужно было бы изучить принцип наследования в java. Поэтому оставим эту тему для следующей статьи. А сейчас в трех словах. В java классы могут наследоваться друг от друга. Подкласс обладает всеми свойствами своего суперкласса. Это как в жизни: сын что-то наследует от отца или матери. Суть переопределения заключается в следующем: в подклассе используется такой же метод (название, тип, и количество параметров) как и в суперклассе, но с другой реализацией. Можно говорить, что метод в подклассе скрывает (перегружает) метод суперкласса. Более подробно мы на них остановимся при изучении наследования. А пока запомним, переопределенными методами считаются два совершенно одинаковые методы с разной реализацией (то что находится между фигурными скобками), причем один метод размещается в суперклассе, а другой - в его подклассе.

переопределение методов
переопределение методов

Здесь стоит обратить внимание на то, как легко подкласс оперирует переменными суперкласса. При этом конфликта имен, на примере с name, не происходит.

Но самое основное и интересное свойство переопределенных методов - это динамическая диспетчеризация, о которой мы поговорим при изучении наследования.

В заключение хотелось бы остановиться еще на одних методах, которые принимают в качестве параметров – аргументы переменной длины. Понятно, если параметров немного, методы можно перегрузить. А если много? Или точное количество их неизвестна? В таких случаях предусмотрены методы с переменными аргументами следующей конструкции:

void nazwanieMetoda (int...a){

тело метода;

}

В такой конструкции предполагается, что аргументы метода размещаются в каком-то массиве, на который ссылается переменная a. Рассмотрим это:

-6

Подведем итоги. Мы рассмотрели перегрузку методов, методы с аргументами переменной длины и переопределение. Суть переопределения методов, с моей точки зрения, полностью не раскрыта, поэтому к ним мы еще вернемся в следующей статье, которая будет посвящена наследованию в java. А сейчас ставьте лайки, подписывайтесь на канал и вас ждет масса увлекательных статей по java.

Наука
7 млн интересуются