AS3中public internal private protected的区别

来源:互联网 发布:linux免费杀毒软件 编辑:程序博客网 时间:2024/05/22 04:08
 

protected

JavaAS3中的一點不同。AS3中的protected修飾類型,於java中略有不同。

Java中使用protected修飾的类、类属变量及方法,包内的任何类,及包外的那些继承了此类的子类都可以访问;

但是AS3中的protected,將會使你的類變得只能被其本身或其子类访问。如果外部类尝试访问被protected的成员,将会抛出编译错误。一般只在其子类中出现。

 

Public

所有调用者都可以使用

 

Private

ActionScript 3.0 中,private不再提供对子类的访问,只供自己的类使用,一般定义成改属性相对比较安全。但是要根据具体情况而定

 

Internal

Internalpublic很相似,只是限定在包内。

 

关于dynamic
动态(dynamic)类允许在运行时动态地添加属性,常见的动态类有MovieClip和顶级(top-level)的Array。如果您的自定义类要继承于动态类,那么请也定义为动态的,不要省略dynamic关键词。

  

关于继承(extends)和override
继承其实并不太复杂,唯一要说明的就是:子类的构造函数一定要用“super”调用一次父类的构造函数,否则报错!对于继承后的子类,如果要重新定义父类的非private方法,必须使用override关键词。在override的时候,如果我们需要调用父类的方法,可以使用super关键词(由于继承方法在逻辑上与父类往往有相似性,因此没有必要把方法逻辑完全重写)官方帮助中的这个例子非常易懂:

override不能用于重载变量(成员属性)。但是却可以用于重写gettersetter函数

 

简要总结:
1、如果我需要属性公开,并且可以被自己的子类继承,那么定义成public的。子类也可重写(override)之。
2、如果我需要属性隐藏,但是可以被自己的子类继承,那么定义成protected的。与public类似,子类也可重写(override)之。
3、如果我的某一个类有一个属性不想在任何位置可见,包括其子类,那么定义为private的。其子类无需重写(override),因为它根本就不存在于子类中。

原创粉丝点击