Программирование на JAVA

Навигация

Лекция 1. Что такое Java? История создания

Лекция 2. Основы объектно-ориентированного программирования

Лекция 3. Лексика языка

Лекция 4. Типы данных

Лекция 5. Имена. Пакеты

Лекция 6. Объявление классов

Лекция 7. Преобразование типов

Лекция 8. Объектная модель в Java

Лекция 9. Массивы

Лекция 10. Операторы и структура кода. Исключения

Лекция 11. Пакет java.awt

Лекция 12. Потоки выполнения. Синхронизация

Лекция 13. Пакет java.lang

Лекция 14. Пакет java.util

Лекция 15. Пакет java.io

Лекция 16. Введение в сетевые протоколы

д., при таком подходе придется менять существующий код и добавлять в него определения новых массивов, а так­же обработку содержащихся в них элементов.

Используя полиморфизм, мы можем значительно упростить реали­зацию подобной функциональности. Прежде всего, создадим общий ро­дительский класс для всех наших классов. Пусть таким классом будет Point. В результате получим иерархию классов, которая изображена на рисунке 2.3.

У каждого из дочерних классов метод draw переопределен таким об­разом, чтобы отображать экземпляры каждого класса соответствующим образом.

Для описанной выше иерархии классов, используя полиморфизм, можно написать следующий код:

Point р[] = new Point[ 1000]; Р[0] = new Circle();

курс

Программирование на Java

Лекция 2_____________________ Основы объектно-ориентированного программирования

р[1] = new Point(); р[2] = new Вох(); р[3] = new Une();

for(int i = 0; i < p.length;i++) { if(p[i]!=null) p.draw();

}

В описанном выше примере массив р[] может содержать любые объ­екты, порожденные от наследников класса Point. При вызове какого-либо метода у любого из элементов этого массива будет выполнен метод того объекта, который содержится в ячейке массива. Например, если в ячейке р[0] находится объект Circle, то при вызове метода draw следующим образом:

p[0].draw()

нарисуется круг, а не точка.

В заключение приведем формальное определение полиморфизма.

Полиморфизм (polymorphism) - положение теории типов, согласно которому имена (например, переменных) могут обозначать объекты раз­ных (но имеющих общего родителя) классов. Следовательно, любой объ­ект, обозначаемый полиморфным именем, может по-своему реагировать на некий общий набор операций [2].


В процедурном программировании тоже существует понятие полимор­физма, которое отличается от рассмотренного механизма в ООП. Процедур­ный полиморфизм предполагает возможность создания нескольких проце­дур или функций с одним и тем же именем, но разным количеством или раз­личными типами передаваемых параметров. Такие одноименные функции называются перегруженными, а само явление - перегрузкой (overloading). Перегрузка функций существует и в ООП и называется перегрузкой методов.

Примером использования перегрузки