Цитата:
|
Так часто делает и сама Adobe почти со всеми классами.
|
Вообще-то с единичными.
Например, представьте себе следующую ситуацию: некоторый класс A является DataProvider`ом для класса B. Класс B честно ждёт загрузки данных (события Event.COMPLETE), после чего мирно начинает работать. Но злые гномы подсунули вместо класса A его наследника, ExtendedA, который шмаляет этот самый Event.COMPLETE каждую секунду. Мирного экземпляра класса B увозят в психушку. Занавес.
Примерно для таких ситуаций и нужен final. Но я сторонник того, что бензопила круче лобзика, и то что к первой надо читать инструкцию и думать меня не останавливает. Поэтому final я не пишу никогда.
P.S. final на скорость никак не влияет. Это даже наивно думать, что компилятор делает какие-то "преобразования", закрывая "отросток" (таблицу виртуальных функций, видимо), который позволяет получить прирост в скорости. Даже если бы такое закрытие существовало - компилятор бы находил сам финальных наследников и перед компиляцией помечал бы их как final. final — это самозавязка рук, и не более.