Исключение возможности расширения классов 

и перекрытия методов ActionScript 

 

 

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

описанием класса или метода необходимо добавить атрибут final. Например,  

следующий код описывает класс А, не допускающий расширения: 

final public class A { 

Поскольку класс А описан с использованием атрибута final, попытка расширить 

этот класс следующим образом: 

public class В extends A { 

завершится ошибкой на этапе компиляции программы: 

Base class is final. (Базовый класс является конечным.) 

Подобным образом следующий код описывает метод m ( ), не допускающий  

перекрытия: 

public class A { 

final public function m ( ) { 

Поскольку метод m ( ) описан с помощью атрибута fin a 1, попытка перекрыть этот 

метод следующим образом: 

public class В extends A { 

override public function m ( ) { 

завершится ошибкой на этапе компиляции программы: 

Cannot redefine a final method. (Невозможно переопределить конечный метод.) 

В языке ActionScript атрибут final используется по нескольким причинам. 

□ В некоторых ситуациях методы, описанные с помощью атрибута final,  

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

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

попробуйте описать методы, используя атрибут final. Однако стоит отметить, 

что в будущих версиях среды выполнения Flash корпорация Adobe планирует 

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

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

методов, описанных с помощью атрибута final. 

Глава 6. Наследование 
□ Методы, описанные с помощью атрибута final, помогают скрыть детали  
внутренней реализации класса. Если описать класс или метод, используя этот  
атрибут, другие программисты не смогут расширить такой класс или перекрыть 
метод с целью изучения внутренней структуры класса. Такая мера  
предосторожности является одним из способов защиты приложения от вредоносного 
кода. 
Если оставить в стороне проблемы эффективности и обеспечения безопасности, 
сообщество программистов разделилось на два лагеря в обсуждении вопроса, 
является ли описание методов и классов с помощью атрибута final хорошей  
практикой объектно-ориентированного программирования. С одной стороны, часть 
программистов утверждает, что методы и классы, описанные с помощью атрибута 
final, являются полезными, поскольку в данном случае можно быть уверенным 
в том, что объект будет вести себя в соответствии с четко определенным  
поведением, а не в соответствии с непредсказуемым (и потенциально проблематичным) 
перекрытым поведением. В то же время другие программисты утверждают, что 
методы и классы, описанные с помощью атрибута final, противоречат  
основному принципу объектно-ориентированного программирования — полиморфизму, 
который предполагает, что экземпляр подкласса может быть использован везде, 
где допустимо применение его суперкласса. С полиморфизмом мы познакомимся 
далее в этой главе. 




BACK NEXT

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