现在,在ActionScript 3.0的修饰符中,只有final修饰符没有介绍。之所有放在这里介绍,是因为final修饰符只与继承有关,指定一个方法不能被重写或一个类不能被继承。

一般来说,当用final修饰符修饰父类的方法时,子类不能重写此方法;当用final修饰符修饰类时,此类讲不能被继承。

提示:ActionScript 3.0中的final修饰符与Jave中的不同,在Java中,final修饰符经常用来定义变量,即字符串、数字等常量一般都会用 public static final 修饰,而在ActionScript 3.0中,常量一般由public static 修饰,而也就是说final修饰符不能修饰变量或常量,只能修饰方法和类。

final方法和类效率更高

定义的类不能被继承,方法(引用该关键字)不能被覆盖(override).

final不能用于修饰构造方法。

使用final修饰方法一般出于这样的目的:当类中某个方法所提供的功能已经能满足需求,即无需要再进行修改或扩展,子类可以继承这样的方法但不能重新或覆盖次方法。

class Person{

public function Person{

}

public final function finalFun ():void{

trace("this is a final function");

}

}

class Teacher extends Person{

public function Teacher{

}

//错误,final方法不能被重写

pubic overrid function finalFun():void{

}

}

因此,用final修饰的方法可以防止该方法在子类中被重写。

同样,如果某个类设计得非常完美,并不需要修改或扩展时,此类就可以用final 修饰。例如,顶级类中的Math类用public final 修饰,flash.display包中的Graphics类也用public final 修饰。

Math类的部分伪代码如下:

package{

public final class Math{

public static const PI:Number= 3.141592653589793

public static function cos(angleRadians:Number):Number{

}

}

}

看到这里,读者可能有些意外,Math类的cos()方法为什么不用fina修饰呢?这是因为Math类已经是final修饰的了,Math类所有方法自然而然地也就是final了,换句话说,再用final修饰cos()方法纯属画蛇添足。

如果用户不小心继承了final修饰的类,Flash讲提示“基类是fina类”的错误。

package{

public class Test extends Mah{

}

}

因此,ongoingfinal修饰类能阻止此类继承。

用final修饰类后,此类就不能被继承,但并不等于不能扩展类的功能。因为类和类的关系有很多,继承只是其中一种关系,不能使用继承可以用聚合等其他的关系。(转)

最新文章

  1. Web安全相关(一):跨站脚本攻击(XSS)
  2. spring的事物实现
  3. Activity中获取view的高度和宽度为0的原因以及解决方案
  4. thinkphp关联模型的用法
  5. mysql 插入中文报错: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value...
  6. 黑马程序员——JAVA基础之List集合
  7. poisspdf(so also poisscdf, poissfit, poissinv, poissrnd, poisstat, pdf.)
  8. 分析Hibernate的事务处理机制
  9. 红领的短板:线下“O”瓶颈_财经频道_一财网
  10. 在CentOS上为Docker开启SELinux
  11. 利用Selenium+PhantomJS 实现截图
  12. SecureCRT + Tmux 分屏 高效开发
  13. [Java concurrent][Collections]
  14. 谈谈我对 js原型链的理解
  15. python3 第三十二章 - 标准库概览
  16. bzoj 2091 The Minima Game - 动态规划 - 博弈论
  17. 执行bin/hdfs haadmin -transitionToActive nn1时出现,Automatic failover is enabled for NameNode at bigdata-pro02.kfk.com/192.168.80.152:8020 Refusing to manually manage HA state的解决办法(图文详解)
  18. Java线程(十一):Fork/Join-Java并行计算框架
  19. String 在内存中如何存储的
  20. oracle过滤某个字段重复记录,只获取一条记录

热门文章

  1. SysRq魔法键的使用
  2. C#编程之IList<T>、List<T>、ArrayList、IList, ICollection、IEnumerable、IEnumerator、IQueryable 和 IEnumerable的区别
  3. HBase的Scan
  4. PHP接口开发加密技术实例原理与例子
  5. 转Python 和C#的交互
  6. 动态爬虫——selenium2搭载phantomjs入门范例
  7. android 开源项目列表【持续整理中。。。】
  8. 学习笔记之Docker
  9. js字符串转换成数字,数字转换成字符串
  10. Linux版本使用的文件系统类型