Домой Учебники по Java и J2EE Скрытие и переопределение метода Java: статический метод переопределения в Java

Скрытие и переопределение метода Java: статический метод переопределения в Java

1478
0

Хотите выучить основы метода?

В Java метод экземпляра в подклассе с той же сигнатурой и типом возврата, что и у метода экземпляра в суперклассе, переопределяет метод суперкласса.

Переопределение и сокрытие методов

Возможность подкласса переопределять метод позволяет классу наследовать от суперкласса, чье поведение close enough а затем изменить поведение по мере необходимости. Переопределенный метод имеет то же имя, число и тип параметров, и тип возвращаемого значения, что и метод, который он переопределяет. По сути, это определение метода, скрывающегося в Java.

Переопределяющий метод также может возвращать подтип типа, возвращаемого переопределенным методом. Это называется covariant return тип.

При переопределении метода, вы можете использовать @Override аннотация, которая указывает компилятору, что вы намереваетесь переопределить метод в суперклассе. Если по какой-то причине компилятор обнаружит, что метод не существует ни в одном из суперклассов, он выдаст ошибку.

Если подкласс определяет метод класса с той же сигнатурой, что и метод класса в суперклассе, метод в подклассе hides тот в суперклассе.

Различие между hiding and overriding имеет важные последствия. Версия переопределенного метода, который вызывается, является той из подкласса. Версия вызываемого скрытого метода зависит от того, вызывается ли он из суперкласса или из подкласса .

Можем ли мы переопределить статический метод в Java?

No, you cannot override static method in Java потому что переопределение метода основано на динамическом связывании во время выполнения. Обычно статические методы связываются с использованием статического связывания во время компиляции еще до запуска программы.

В принципе, keyword static изменяет жизненный цикл переменной и метода. Если вы указываете статический метод или переменную, то они создаются во время загрузки класса, а не во время выполнения. Nonstatic переменные и методы доступны только во время выполнения.

ЧИТАТЬ ТАКЖЕ:  В чем разница между оператором JDBC, PreparedStatement и CallableStatement

Давайте посмотрим на ниже пример Java, который содержит два класса. Первый Company , который содержит один метод экземпляра и один метод класса. Второй класс, подкласс Company , называется CrunchifyComapny :

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

CrunchifyHideStaticMethod.java

Джава
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
пакет ком . crunchify. учебные пособия ;
/ **
* @author Crunchify.com
* /
общественности учебный класс CrunchifyHideStaticMethod {
общественности статический недействительным главная ( Строка args [ ] ) {
Компания CMP знак равно новый CrunchifyCompany ( ) ;
// если мы можем переопределить static, это должно вызвать метод из класса Child
CMP. staticMethod ( ) ; // Eclipse должен показывать предупреждение: статический метод
// staticMethod () из типа Company должно быть
// доступ статический
CMP. nonStaticMethod ( ) ;
}
}
// Comapny: Super-Parent Class
учебный класс Компания {
// открытый статический метод, который не может быть переопределен в Java
общественности статический недействительным staticMethod ( ) {
Система. вне. println ( «Компания: метод статического экземпляра» ) ;
}
// нестатический метод
общественности недействительным nonStaticMethod ( ) {
Система. вне. println ( «Компания: нестатический метод» ) ;
}
}
// CrunchifyCompany: дочерний класс
учебный класс CrunchifyCompany продолжается Компания {
/ *
* статический метод с тем же именем и сигнатурой метода, который существовал в супер
* класс, это не переопределение метода, это называется скрытием метода
* на Java
* /
общественности статический недействительным staticMethod ( ) {
Система. эээ. println ( «CrunchifyCompany: переопределенный метод статического экземпляра» ) ;
}
// нестатический метод
общественности недействительным nonStaticMethod ( ) {
Система. вне. println ( CrunchifyCompany: нестатический метод ) ;
}
}

Выход консоли Eclipse:

1
2
Компания : статический Метод экземпляра
CrunchifyCompany : неСтатическая метод
Скрытие и переопределение метода Java: статический метод переопределения в Java

0.00 (0%) 0 votes

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь