as3 中 final 修饰符
现在,在ActionScript 3.0的修饰符中,只有final修饰符没有介绍。之所有放在这里介绍,是因为final修饰符只与继承有关,指定一个方法不能被重写或一个类不能被继承。
一般来说,当用final修饰符修饰父类的方法时,子类不能重写此方法;当用final修饰符修饰类时,此类讲不能被继承。
提示:ActionScript 3.0中的final修饰符与Jave中的不同,在Java中,final修饰符经常用来定义变量,即字符串、数字等常量一般都会用 public static final 修饰,而在ActionScript 3.0中,常量一般由public static 修饰,而也就是说final修饰符不能修饰变量或常量,只能修饰方法和类。
final方法和类效率更高
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修饰类后,此类就不能被继承,但并不等于不能扩展类的功能。因为类和类的关系有很多,继承只是其中一种关系,不能使用继承可以用聚合等其他的关系。(转)
最新文章
- Web安全相关(一):跨站脚本攻击(XSS)
- spring的事物实现
- Activity中获取view的高度和宽度为0的原因以及解决方案
- thinkphp关联模型的用法
- mysql 插入中文报错: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value...
- 黑马程序员——JAVA基础之List集合
- poisspdf(so also poisscdf, poissfit, poissinv, poissrnd, poisstat, pdf.)
- 分析Hibernate的事务处理机制
- 红领的短板:线下“O”瓶颈_财经频道_一财网
- 在CentOS上为Docker开启SELinux
- 利用Selenium+PhantomJS 实现截图
- SecureCRT + Tmux 分屏 高效开发
- [Java concurrent][Collections]
- 谈谈我对 js原型链的理解
- python3 第三十二章 - 标准库概览
- bzoj 2091 The Minima Game - 动态规划 - 博弈论
- 执行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的解决办法(图文详解)
- Java线程(十一):Fork/Join-Java并行计算框架
- String 在内存中如何存储的
- oracle过滤某个字段重复记录,只获取一条记录
热门文章
- SysRq魔法键的使用
- C#编程之IList<;T>;、List<;T>;、ArrayList、IList, ICollection、IEnumerable、IEnumerator、IQueryable 和 IEnumerable的区别
- HBase的Scan
- PHP接口开发加密技术实例原理与例子
- 转Python 和C#的交互
- 动态爬虫——selenium2搭载phantomjs入门范例
- android 开源项目列表【持续整理中。。。】
- 学习笔记之Docker
- js字符串转换成数字,数字转换成字符串
- Linux版本使用的文件系统类型