Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SHPORY DLYA TEL.doc
Скачиваний:
41
Добавлен:
30.04.2015
Размер:
462.34 Кб
Скачать

22 Перегрузка и переопределение членов класса

Переопределением метода называется объявление в подклассе метода, у которого имя, тип и список параметров, в точности совпадают с соответствующими атрибутами метода, ранее объявленного в суперклассе.

При переопределении метода использование модификаторов доступа должно удовлетворять следующим условиям:

если переопределяемый метод суперкласса не содержит ни одного из модификаторов доступа public, protected или private, то переопределяющий метод не должен иметь модификатора private.

если переопределяемый метод суперкласса имеет модификатор доступа protected, то переопределяющий метод должен иметь модификатор доступа public или protected.

если переопределяемый метод суперкласса имеет модификатор доступа public, то переопределяющий метод должен также иметь модификатор доступа public.

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

Если класс содержит переопределяющий метод, то переопределенный метод можно вызвать только с квалификацией ссылки ключевым словом super или именем суперкласса (для статических членов).

Пример переопределения методов в Java:

class A {

public void Metod1() { }

public static void Metod2() { }

}

class B extends A {

public Metod1() { }

...

Metod1(); // Вызов метода из класса B

super.Metod1(); // Вызов метода из класса A

A.Metod2();

}

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

Пример перегрузки метода myPrint:

public class MyClass2 {

private String str1; private void myPrint(int i){

System.out.println(i);

public MyClass2() { }

super(); private void myPrint(String s){

str1 = "String"; System.out.println(s);

myPrint(str1); }

myPrint(str1, 10); private void myPrint(String s, int i){

System.out.println(s);

} System.out.println(i);

}

}

23 Абстрактные классы

Абстрактный класс в объектно-ориентированном программировании — базовый класс, который не предполагает создания экземпляров. Абстрактный класс может содержать (и не содержать) абстрактные методы и свойства. Абстрактный метод не реализуется для класса, в котором описан, однако должен быть реализован для его неабстрактных потомков. Абстрактные классы представляют собой наиболее общие абстракции, то есть имеющие наибольший объем и наименьшее содержание. В одних языках создавать экземпляры абстрактных классов запрещено, в других это допускается (например, Delphi), но обращение к абстрактному методу объекта этого класса в процессе выполнения программы приведёт к ошибке. Во многих языках допустимо объявить любой класс абстрактным, даже если в нём нет абстрактных методов (например, Java), именно для запрещения создания экземпляров. Абстрактный класс можно рассматривать в качестве интерфейса к семейству классов, порождённому им, но, в отличие от классического интерфейса, абстрактный класс может иметь определённые методы, а также свойства. Абстрактные методы часто являются и виртуальными, в связи с чем понятия «абстрактный» и «виртуальный» иногда путают.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]