• 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方法和类效率更高

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

  • 相关阅读:
    ————————————————————————动态规划——————————————————————1003——————————
    -------------初识----------动态规划。--------------------------------------------
    lsof,fuser,xargs,print0,cut,paste,cat,tac,rev,exec,{},双引号,单引号,‘(字符串中执行命令)
    bash characters
    SNORT--install ---dependency-resolve
    Linux SA--HugePage,HPET
    linux UIO
    java generic super, extend
    linux dpdk DDOS清洗和流量行为分析
    虚拟网卡 TUN/TAP 驱动程序设计原理
  • 原文地址:https://www.cnblogs.com/dt1991/p/7941351.html
Copyright © 2020-2023  润新知