Почему наследование?  ActionScript 

 

 

Наиболее очевидным преимуществом наследования является возможность  

повторного использования кода. Наследование позволяет отделять набор базовых  

возможностей от их специализированных версий. Код базовых возможностей хранится 

в суперклассе, а код специализаций полностью содержится в подклассе. Более того, 

суперкласс могут расширять несколько подклассов, благодаря чему одновременно 

может существовать несколько специализированных версий определенного набора 

возможностей. Если в суперклассе изменяется реализация некоторой возможности, 

все подклассы автоматически наследуют это изменение. 

Кроме того, наследование позволяет выражать архитектуру приложения в  

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

Например, в реальном мире мы считаем, что растения отличаются от животных, но 

в то же время и тех и других мы относим к живым существам. Мы считаем, что 

автомобили отличаются от самолетов, но и те и другие являются средством  

передвижения. Соответствующим образом в приложении для управления кадрами 

может существовать суперкласс Employee с подклассами Manager, CEO и Worker. 

В банковском приложении можно создать суперкласс BankAccount с подклассами 

CheckingAccount и SavingsAccount. Все эти канонические примеры  

демонстрируют одну из разновидностей наследования, иногда называемую  

наследованием подтипов, когда иерархия классов приложения моделирует ситуацию в реальном 

мире (называемую доменом или проблемной областью). 

Несмотря на то что примеры классов Employee и BankAccount  

демонстрируют привлекательные возможности наследования, далеко не каждое наследование 

отражает реальный мир. На самом деле чрезмерный акцент на моделировании 

реального мира может привести к неправильному пониманию наследования и, как 

следствие, к его неправильному использованию. Например, в случае с классом 

Person мы могли бы поддаться искушению и создать подклассы Female и Male. 

В реальном мире данные категории являются логичными, но если бы эти классы 

использовались, скажем, в приложении для генерации отчетов в учебном  

заведении, нам пришлось бы создать классы MaleStudent и FemaleStudent только 

для того, чтобы сохранить иерархию реального мира. В нашей программе операции, 

 

описанные для студентов мужского пола, ничем не отличаются от операций,  

описанных для студентов женского пола, и, следовательно, должны использоваться 

одинаково. В данном случае иерархия реального мира конфликтует с иерархией 

нашего приложения. Если вам необходима информация о поле, лучше создать 

один класс Student и добавить переменную gender в класс Person. Насколько 

бы это ни было заманчивым, мы должны избегать создания структур  

наследования, основываясь исключительно на реальном мире, а не на требованиях нашей 

программы. 

И наконец, помимо возможности повторного использования кода и создания  

логической иерархии, наследование позволяет применять различные типы объектов 

там, где требуется только один тип. Эта важная возможность, называемая  

полиморфизмом, заслуживает отдельного рассмотрения. 




BACK NEXT

Сайт является частным собранием материалов и представляет собой любительский информационно-образовательный ресурс. Вся информация получена из открытых источников. Администрация не претендует на авторство использованных материалов. Все права принадлежат их правообладателям