Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
25
Добавлен:
13.03.2015
Размер:
254.46 Кб
Скачать

Подклассы, суперклассы и наследование

Некоторые объекты могут иметь подобные, но не идентичные атрибуты и методы. Если степень такого подобия достаточно высока, то имеет смысл совместно использо­вать некоторые свойства (атрибуты и методы). Наследование (inheritance) позволяет определять один класс на основе более общего класса. Такие менее общие классы на­зываются подклассами, а более общие — суперклассами. Процесс образования су­перкласса называется обобщением (generalization), а процесс образования подклас­са — специализацией. По умолчанию подкласс наследует все свойства его суперклас­са и в дополнение к ним определяет свои собственные уникальные свойства. Однако, как мы вскоре увидим, подкласс также может переопределять унаследованные мето­ды. Все экземпляры подкласса являются также экземплярами суперкласса. Более того, согласно принципу подстановки, для любого метода и конструкции вместо эк­земпляра суперкласса всегда можно использовать экземпляр его подкласса.

Понятия подкласса, суперкласса и наследования аналогичны таким же понятиям, которые рассматривались в модели типа сущность-связь, за исключением того, что в объектно-ориентированной парадигме наследование относится как к состоя­нию, так и к поведению. Связь между подклассом и суперклассом обычно называется связью типа АКО. Связь между экземпляром и его классом иногда называют связью типа IS-A.

Существует несколько видов наследования: единичное, множе­ственное, повторное и избирательное ( см. рисунки 9, 10, 11).

Рисунок 9 - Пример единичного наследования

Рисунок 10 - Пример множест­венного наследования

Рисунок 11 - Пример повторного наследования

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

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

Переопределение

Подкласс автоматиче­ски наследует от суперклассов свойства, а именно атрибуты и методы. Однако свойство суперкласса в подклассе можно определить заново. В этом случае используется именно то опреде­ление свойства, которое приводится в подклассе, а сам этот процесс называется пе­реопределением.

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

Перегрузка

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

Полиморфизм и динамическое связывание

Перегрузка является частным случаем более общего понятия полиморфизма. Су­ществуют три типа полиморфизма: рабочий, включения и параметрический. Метод, опреде­ленный в суперклассе и унаследованный в его подклассе, является примером полиморфизма включения. Параметрический полиморфизм, или универсальность, означает использова­ние типов в качестве параметров в объявлениях универсального типа или класса.

Процесс выбора соответствующего метода, основанный на типе объекта, называет­ся связыванием. Если определение типа объекта может быть отложено до наступления времени исполнения (а не во время компиляции), то такой выбор назы­вается динамическим, или поздним, связыванием.

Соседние файлы в папке Новые лекции