Главная » Java » Перегруженные методы Java

0

Объявление каждого метода включает сигнатуру - сочетание наименования метода и списка его параметров. Методы класса должны различаться сигнатурами – они могут обладать одним и тем же именем, но количество и/или типы их "параметров в таком случае совпадать не могут. Методы класса, имеющие одно и то же имя, называют перегруженными (overloaded) (такое имя получает несколько возможных толкований). При вызове метода компилятор анализирует количество и типы аргументов и находит тот перегруженный метод, сигнатура которого в наибольшей мере отвечает ситуации. Ниже приведены тексты двух Перегруженных методов orbitsAround класса Body, один из которых возвращает значение true в том случае, когда текущее небесное тело вращается вокруг тела, указанного посредством ссылки на объект, а второй выполняет то же самое, только в качестве параметра принимает номер объекта:

public boolean orbitsAround(Body other) {

 return (orbits == other);

}

public boolean orbitsAround(long id) {

return (orbits != null && orbits.idNUm == id);

}

В объявлениях обоих методов указано по одному параметру, но их типы различны. Если при вызове в качестве. аргумента вводится выражение ссылки на объект класса Body, управление передается первому из методов – в нем содержимое параметра other сравнивается со значением поля orbits текущего объекта. Если же в конструкции вызова задается значение типа long, в действие вступает второй одноименный метод, сопоставляющий значение поля idNum текущего объекта с содержимым. Если компилятор не в состоянии найти сигнатуры метода, соответствующей конструкции вызова, он генерирует сообщение об ошибке.

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

Теперь вы понимаете, что те несколько конструкторов в объявлении класса Body, с которыми мы имели дело раньше, вполне уместно называть перегруженными.

Упражнение 2.16. Добавьте в объявление класса vehiсlе два метода turn: один в качестве параметра, обусловливающего направление поворота автомобиля, Должен принимать значение, выраженное в градусах, а второй – одну из Констант, vehiсlе. TURN_LEFT или vehiсlе. TURN_RIGHT.

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии