Java допускает перегрузку методов, при которой два или более метода одного и того же класса могут иметь одно и то же имя.
Перегрузка метода происходит, когда объявления параметров метода различны.
Перегрузка метода — это способ реализации полиморфизма в Java.
Чтобы перегрузить метод, необходимо объявить разные его версии.
Компилятор автоматически выбирает правильный метод на основе параметров.
Важное ограничение: перегруженные методы должны различаться типом и/или количеством параметров, а не только типом возвращаемого значения.
Перегруженные методы также могут различаться по типам возвращаемых значений, но параметры имеют важное значение для выбора правильного метода.
При вызове перегруженного метода выполняется версия с параметрами, соответствующими аргументам.
Метод ovlDemo() перегружен четыре раза с разными сигнатурами:
Первая версия: без параметров.
Вторая версия: с целочисленным параметром.
Третья версия: с двумя целочисленными параметрами.
Четвертая версия: с двумя двойными параметрами.
Первые две версии ovlDemo() возвращают void, а последние две возвращают значение.
Перегрузка метода не зависит от типа возвращаемого значения.
Попытки использовать обе версии ovlDemo() с сигнатурами, различающимися только по типу возвращаемого значения, вызовут ошибку.
Разницы в типах возвращаемых значений недостаточно для перегрузки методов в Java.
В примере показано, что два метода с одинаковой сигнатурой, даже с разными типами возвращаемого значения, вызывают ошибку.
Java выполняет автоматическое преобразование типов, и эти преобразования также применяются к параметрам перегруженных методов.
В примере показаны две версии метода f(): одна с параметром int, другая с параметром double.
Значения типов byte и short автоматически преобразуются в int, вызывая метод f(int).
Значения с плавающей запятой преобразуются в двойные путем вызова метода f(double).
Автоматические преобразования происходят, когда нет прямого соответствия между параметром и аргументом.
Добавление версии f() с байтовым параметром может изменить способ обработки значений.
В текущей версии, когда f() вызывается с байтовым аргументом, f(byte) вызывается напрямую, без автоматического преобразования в int.
Перегрузка методов допускает полиморфизм в Java, облегчая реализацию парадигмы «один интерфейс, множество методов».
В языках без поддержки перегрузки аналогичные методы для разных типов данных должны иметь разные имена (например, abs(), labs(), fabs() в C).
Java позволяет использовать одно и то же имя для методов с разными типами аргументов, например метод abs() класса Math, который перегружен для разных числовых типов.
Перегрузка снижает сложность, позволяя связанным методам иметь общее имя.
Выбор правильной версии метода осуществляется компилятором на основе типа аргумента.
Хотя перегруженные методы могут выполнять разные действия, они должны быть связаны для обеспечения ясности и последовательности.
Избегайте использования перегруженных имен методов для несвязанных операций, так как это может сбить с толку смысл кода.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3