Многие студенты глупы и не могут определить разницу между перегрузкой и переопределением. Рекомендуется не запоминать концептуальные знания по Rote, но понять и запомнить его.
Позвольте мне сначала дать мое определение:
Во -первых, давайте поговорим о: перегрузке
(1) Перегрузка метода - это средство, позволяющее классам унифицированным обрабатыванием различных типов данных. Несколько функций с одинаковым именем существуют одновременно, с разными параметрами/типами. Перегрузка - это проявление полиморфизма в классе.
(2) Перегрузка метода Java означает, что в классе можно создать несколько методов, они имеют одинаковое имя, но имеют разные параметры и разные определения. При вызове методов мы решаем, какой метод использовать по количеству различных параметров и типов параметров, передаваемых им. Это полиморфизм.
(3) При перегрузке имя метода должно быть одинаковым, но тип параметра и число различны, а тип возвратного значения может быть одинаковым или другим. Возвратный тип не может быть использован в качестве критериев различия для функций перегрузки.
Давайте сначала посмотрим на пример перегрузки:
public Class reveloadParent {public String getPerson (string name) {return "persona" + name; } public String getPerson (int age) {return "personb"; } public String getPerson (String name, int age) {return "personc"; } public void getPerson (String name) {System.out.println ("Я перегруженный метод?"); }} public class reaulughuldextends reveloadparent {public void getPerson (Double Money) {System.out.println ("I Is перегруженный метод"); }}Обратите внимание на наблюдение:
(1) Есть 4 метода с тем же именем в перегрузке.
(2) Типы параметров и числа первых трех методов непоследовательны, а возвратное значение одинаково, что представляет собой перегрузку
(3) Метод 4 и метод 1 только возвращаемые значения различны и не являются перегрузкой, и компилятор не проходит.
PS: возвращаемое значение является результатом выполнения метода. Когда мы вызовываем метод, мы не будем указывать «Я хочу вызвать метод с возвратным значением типа XXX», он не станет функцией перегрузки метода.
(4) Перегрузки наследуют демонстрацию, и в нем есть все методы, принадлежащие демонстрации. Казалось, что существующий метод не мог удовлетворить потребности, поэтому он просто перегружен.
Перегруженные флаги: имя метода одинаково, параметры различны (число или тип) и не имеют ничего общего с возвратным значением.
Тогда давайте поговорим о переопределении (перепродажи)
(1) Полиморфизм между родительским классом и классом ребенка переопределяет функции родительского класса. Если метод, определенный в подклассе, имеет одинаковое имя и параметры, что и его родительский класс, мы говорим, что метод переоценен. В Java подклассы могут наследовать методы от родительского класса, не переписывая тот же метод.
Но иногда подкласс не хочет наследовать методы родительского класса, а скорее хочет внести определенные модификации, которые требуют переписывания метода.
Перезапись метода также называется перезаписанием метода.
(2) Если метод в подклассе имеет одинаковое имя метода, тип возврата и таблицы параметров, как метод в родительском классе, новый метод будет переопределять исходный метод.
Если вам нужен оригинальный метод в родительском классе, вы можете использовать супер -ключевое слово, которое относится к родительскому классу текущего класса.
(3) разрешения на модификацию доступа функций подкласса не могут быть меньше, чем у родительского класса;
Давайте посмотрим на пример перезаписи:
public class overrideparent {public void fly () {System.out.println ("Ican Fly!"); }} public class overdechild extends overrideparent {@override public void fly () {System.out.println ("Ican't Fly, но я могу запустить!"); } public static vid main (string [] args) {everwriteParent child = new TopwriteChild (); Child.fly (); }}Что будет выводиться при выполнении основного метода Repidechild?
Ответ: я не могу накапливаться, но я могу бежать!
Мы видим:
(1) RepideChild и Override ProaveRent имеют метод мухи
(2) Возвратное значение и модификатор мухи одинаковы, только тело метода отличается
(3) перед методом подкласса есть аннотация @overwrite. JDK1.5 появляется и используется только для наследования класса. 1.6 может использоваться для реализации интерфейса. Эта аннотация помогает компилятору проверить, и это нормально, чтобы не добавлять ее.
Переопределенные флаги : ребенок наследует родительский класс и имеет разные реализации для одного и того же метода.
Сценарии приложения
Перегрузка: когда функции метода похожи, но необходимо пройти разные параметры.
Переопределение: когда подкласс имеет свое уникальное поведение, он наследует от родительского класса и не может удовлетворить свои собственные потребности.
PS: перегрузка и перезагрузка являются проявлениями полиморфизма. Первый - это полиморфизм компилятора, в то время как последний - полиморфизм времени выполнения.
Правила для переписывания методов:
1. Список параметров должен быть точно таким же, как и метод перезаписываемого, иначе его нельзя назвать переписыванием, но перегружено.
2. Возвращенный тип всегда должен быть таким же, как и возвращаемый тип перезаписываемого метода, в противном случае его нельзя назвать переписыванием, но перегружено.
3. Предел модификатора доступа должен быть больше, чем модификатор доступа переписанного метода (Public> Protected> Default> Private)
4. Метод переписывания не должен бросать новые исключения для проверки или более широко проверяемые исключения, чем объявление метода переписывания. Например:
Метод родительского класса объявляет исключение проверки ioException. Переписывая этот метод, вы не можете бросить исключение, вы можете бросить только подклассу исключение IOException, и вы можете бросить неверные исключения.
И правила перегрузки:
1. Должен иметь разные списки параметров;
2. Может быть возвратный тип, который не ругает вас, если список параметров отличается;
3. Там могут быть разные модификаторы доступа;
4. Различные исключения могут быть брошены;
Разница между переписыванием и перегрузкой состоит в:
Переписывание полиморфизма работает, вызов перегруженных методов может значительно уменьшить входной объем кода. Пока одно и то же имя метода передает в него разные параметры, оно может иметь разные функции или возвращаемые значения.
Если вы используете переписывание и перегрузку хорошо, вы можете разработать класс с чистой и краткой структурой. Можно сказать, что роль переписывания и перегрузки в процессе написания кода является необычайной.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.