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

as3 中 final 修饰符的更多相关文章

  1. Java中final修饰符深入研究

    一.开篇 本博客来自:http://www.cnblogs.com/yuananyun/ final修饰符是Java中比较简单常用的修饰符,同时也是一个被"误解"较多的修饰符.对很 ...

  2. java中final修饰符的使用

    1.final修饰符的用法: final可以修饰变量,被final修饰的变量被赋初始值之后,不能对它重新赋值. final可以修饰方法,被final修饰的方法不能被重写. final可以修饰类,被fi ...

  3. JAVA中final修饰符小结

    一.final关键字可以用来修饰类.方法.变量.各有不同. A.修饰类(class).      1.该类不能被继承.      2.类中的方法不会被覆盖,因此默认都是final的.      3.用 ...

  4. Java中的final修饰符

    1.什么时候可以选择final修饰符 如果想让一个类不被其他类继承,不允许在有子类,这时候就要考虑用到final来修饰. 2.用final修饰的类 首先大家要明白,用final修饰的类是不能被继承的, ...

  5. Java中的(构造方法、方法重载、final修饰符使用及继承和抽象)

    构造方法: 构造方法的名称和类名相同,没有返回类型,参数列表(类型.个数)不同 方法重载:成员方法和构造方法都可以进行重载 方法名相同但是参数列表(类型,个数)不同,成为方法的重载. 继承:直支持单继 ...

  6. java中接口的概念及使用(补充final修饰符的使用)

    接口 初期理解,可以是一个特殊的抽象类 当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示 class 用于定义类 interface 用于定义接口 接口定义时,格式特点: 1.接口中常见的 ...

  7. java中static和final修饰符

    static和final修饰符 一.static修饰符 static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. ...

  8. JAVA语言中的修饰符

    JAVA语言中的修饰符 -----------------------------------------------01--------------------------------------- ...

  9. 关于Java语言中那些修饰符

    一.在java中提供的一些修饰符,这些修饰符可以修饰类.变量和方法,在java中常见的修饰符有:abstract(抽象的).static(静态的).public(公共的).protected(受保护的 ...

随机推荐

  1. ballerina 学习 三十 扩展开发(一)

    ballerina 主要是分为两大类 基于ballerina 语言开发的,一般是客户端的connector 使用java语言开发的(类似的基于jvm的都可以),一般是注解以及进行构件生成 baller ...

  2. benthos 通过rest api 配置 stream 说明

    stream 模式,我们可以通过rest api 进行控制 使用方法 启动 benthos --streams 进行流的配置(rest api) curl http://localhost:4195/ ...

  3. 【转】每天一个linux命令(8):cp 命令

    原文网址:http://www.cnblogs.com/peida/archive/2012/10/29/2744185.html cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一 ...

  4. vue-cli、webpack提取第三方库-----DllPlugin、DllReferencePlugin

    需要安装的插件有 extract-text-webpack-plugin assets-webpack-plugin clean-webpack-plugin npm install extract- ...

  5. JWT 基础教程

    原文地址:JWT 基础教程 博客地址:http://www.extlight.com 一.前言 针对前后端分离的项目,大多是通过 token 进行身份认证来进行交互,今天将介绍一种简单的创建 toke ...

  6. Django 博客项目02 Form验证+ 上传头像(预览)+Ajax用户注册

    头像预览 $("#avatar_file").change(function(){ // 获取上传的文件对象 var file=$(this)[0].files[0]; // 读取 ...

  7. linux 守护进程(daemon process)代码-详细注释

    1. 进程组 组长不能创建新的 会话. 其它进程可以创建新的会话,创建后既成为会话首领,同时失去控制终端. 2. 会话首领可以重新打开控制终端 1 #include <stdio.h> 2 ...

  8. sql表设计

    数据库实际上是系统逻辑在磁盘上的固化,是信息河流的蓄水池. 数据库的表应有如下类型 1)类表.配置表.作为业务逻辑基本的名字,状态的定义,作为构建逻辑世界的最基础框架,解释框架的框架. 特点,数据不会 ...

  9. 【EasyUI学习-1】MyEclipse+easyui学习官方Demo

    介绍 easyui的介绍,网上很多,这里就不进行介绍了. easyUI获取 官网: http://www.jeasyui.com/  下载地址:http://www.jeasyui.com/downl ...

  10. excel 怎么添加超链接

    1.只能对单元格添加超链接 2.如果要对单元格里面个别字做成超链接,可以使用图形工具,设置一个图形在里面,对这个图形做超链接 参考:https://jingyan.baidu.com/article/ ...