| override不能用于重载变量(成员属性)。但是却可以用于重写getter 和setter 函数,例如:(官方帮助的例子)package
 {
 import flash.display.MovieClip;
 public class OverrideExample extends MovieClip
 {
 public function OverrideExample()
 {
 trace(currentLabel)
 }
 override public function get currentLabel():String
 {
 var str:String = “Override: “;
 str += super.currentLabel;
 return str;
 }
 }
 }
 这个例子中,我们直接重写了MovieClip类的currentLabel 属性。注意调用父类属性的时候,用了super.currentLabel。 关于静态方法,比较麻烦。首先,静态方法是无法被重载的。必须通过类来访问。但是您也可以自己定义与静态方法同名的方法,我把官方的例子做了一下修改就一目了然了: package{
 import flash.display.MovieClip;
 public class StaticExample extends MovieClip
 {
 public function StaticExample()
 {
 var myExt:Extender = new Extender();
 }
 }
 }
 
 class Base {
 public static var test:String = “static”;
 }
 
 class Extender extends Base
 {
 private var test:String = “instance”;
 public function Extender()
 {
 trace(Base.test); // output: static
 trace(test); //added by awflasher.com, output: instance
 }
 }
 七、关于import语法在AS2时代,“import”语法只是为了让编程时代码简洁(省去了包名),比如我们import了mx.transitions.Tween之后,就可以直接new Tween()了。而如果不import,我们也可以直接用全类名来构造实例,例如:new mx.transitions.Tween();
 然而,在AS3中,无论是否采用全名类声明,只要你用到这个类,就必须import。import 估计是传统Flash程序员所需要养成的一个最大的习惯,在刚切入AS3开发平台的时候,我常常忘记import一些常用的类,例如从IDE 指向过来的文本和渲染元件,以及flash.event.*、flash.display.StageAlign等比较泛用的类。 AS3中不像AS2那样,我们不能用_root和Stage[”displayState”]来进行hacks了。 八、关于编译时的注意事项AS3不再像AS2那样简单地Compile-Time(编译时,即FlashCS3/FlexBuidler/其他编译器发布ActionScript 及所有资源为SWF文件的那一时刻)进行类型检测了,AS3在Run-Time(运行时,级Flashplayer 或者其他播放SWF的软件在播放SWF 的时候)也有类型检测,因此AS2的Hacks(强制访问不能访问的属性)将不再有效。
 九、一个不得不说的好消息AS3中类所有的变量(属性)和函数(方法)的作用域都是运行时跟类/实例走的。这与AS2大有不同,我们不再需要去Delegate了。只要是类自己的方法,在调用的过程中,this永远指向类自己(实例)。
 简要总结:1、如果我需要属性公开,并且可以被自己的子类继承,那么定义成public的。子类也可重写(override)之。
 2、如果我需要属性隐藏,但是可以被自己的子类继承,那么定义成protected的。与public类似,子类也可重写(override)之。
 3、如果我的某一个类有一个属性不想在任何位置可见,包括其子类,那么定义为private的。其子类无需重写(override),因为它根本就不存在于子类中。
 经典论坛讨论:本文链接:http://www.blueidea.com/tech/multimedia/2007/4703.asphttp://bbs.blueidea.com/thread-2743937-1-3.html
   出处:蓝色理想
责任编辑:elesa
 上一页 AS3的面向对象特点概述 [1] 下一页 ◎进入论坛Flash专栏版块参加讨论
	      |