9. Перегрузка и переопределение членов класса.
Переопределением
метода
называется объявление в подклассе
метода, у которого имя, тип и список
параметров, в точности совпадают с
соответствующими атрибутами метода,
ранее объявленного в суперклассе.
При переопределении
метода использование модификаторов
доступа должно удовлетворять следующим
условиям:
если переопределяемый
метод суперкласса не содержит ни одного
из модификаторов доступа public,
protected
или private,
то переопределяющий метод не должен
иметь модификатора private.
если переопределяемый
метод суперкласса имеет модификатор
доступа protected,
то переопределяющий метод должен иметь
модификатор доступа public
или protected.
если переопределяемый
метод суперкласса имеет модификатор
доступа public,
то переопределяющий метод должен также
иметь модификатор доступа public.
Тип возвращаемого
значения переопределяющего метода
должен совпадать или преобразовываться
присвоением к типу возвращаемого
значения переопределяемого метода.
Если класс содержит
переопределяющий метод, то переопределенный
метод можно вызвать только с квалификацией
ссылки ключевым словом super
или именем суперкласса (для статических
членов).
Пример
переопределения методов в Java:
class A {
public void Metod1() { }
public static void Metod2() { }
}
class B extends A {
publicMetod1()
{ }
...
Metod1(); // Вызов метода
из классаB
super.Metod1();
// Вызов метода из классаA
A.Metod2();
}
Перегружаемыми методаминазывается группа методов с одинаковым
именем, но различными списками параметров.
Язык Java позволяет
определять в классах
перегружаемые методы.
Пример перегрузки метода myPrint:
public class MyClass2 {
private String str1;
public MyClass2() {
super();
str1 = "String";
myPrint(str1);
myPrint(str1, 10);
}
private void myPrint(int i){
System.out.println(i);
}
private void myPrint(String s){
System.out.println(s);
}
private void myPrint(String s, int i){
System.out.println(s);
System.out.println(i);
}
}