开发者社区> meteoric> 正文

AS3.0中类初始化的顺序

简介: 我做了一个比较,java中有静态初始化块的概念(as3中是没有的),格式如下: static { //TODO…. } 关于java中类的初始化顺序,我想只要随便搜索一下,将有超过十万的结果出来   这里侧重点在as3的代码   在同一包下若有三个类: main.
+关注继续查看

我做了一个比较,java中有静态初始化块的概念(as3中是没有的),格式如下:

static {

//TODO….

}

关于java中类的初始化顺序,我想只要随便搜索一下,将有超过十万的结果出来

 

这里侧重点在as3的代码

 

在同一包下若有三个类:

main.as<用于测试>

Parent.as 父类

SubClass.as 子类

其中SubClass继承至Parent

image

 

父类Parent.as的代码:

package  
{	
	public class Parent
	{
		public static var p_StaticField:String = "父类--静态变量";
		public var p_field:String = "父类--变量";
		
		public function Parent() 
		{
			trace(p_field);
			trace('父类--构造器');
		}
		
		trace(p_StaticField);
		
	}

}

 

子类SubClass.as的代码:

package  
{	
	public class SubClass extends Parent
	{
		public static var s_StaticField:String = "子类--静态变量";
		private var s_field:String = "子类--变量"; 
			
		public function SubClass() 
		{
			trace(s_field);
			trace('子类--构造器');
		}
		
		trace(s_StaticField);		
	}

}

 

测试类Main.as的代码:

package 
{
	import flash.display.Sprite;
	import flash.events.Event;	
	
	public class Main extends Sprite 
	{
		
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
		
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
			
			new SubClass();
		}
		
	}
	
}

 

 

这里有个问题就是,在调用类的构造函数时,类中的变量才被初始化

运行的结果显示如下:

父类--静态变量
子类--静态变量
父类--变量
父类--构造器
子类--变量
子类--构造器

image

 

as3中类的初始化顺序与java基本上是相同(除了as3中没有静态块的概念外):

(1)当类被加载时,该类的静态属性和方法会被初始化

(2)初始化成员变量

(3)调用构造器

 

而java中:

image

运行的结果:

父类--静态变量 父类--静态初始化块 子类--静态变量 子类--静态初始化块 父类--变量 父类--初始化块 父类--构造器 子类--变量 子类--初始化块 子类--构造器

 

如果去除”静态初始化块”

那么java与as3的类加载顺序表现上是一致的

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
springboot 2.0集成webmagic(低配置,自动化采集)(下)
springboot 2.0集成webmagic(低配置,自动化采集)(下)
3 0
springboot 2.0集成webmagic(低配置,自动化采集)(上)
springboot 2.0集成webmagic(低配置,自动化采集)(上)
3 0
Java实现高效随机数算法的示例代码---梅森旋转算法(Mersenne twister)
Java实现高效随机数算法的示例代码 梅森旋转算法(Mersenne twister)是一个伪随机数发生算法。由松本真和西村拓士在1997年开发,基于有限二进制字段上的矩阵线性递归。可以快速产生高质量的伪随机数,修正了古典随机数发生算法的很多缺陷。 最为广泛使用Mersenne Twister的一种变体是MT19937,可以产生32位整数序列。
4 0
SpringBoot 实现 Excel 导入导出,性能爆表,用起来够优雅
操作Excel实现导入导出是个非常常见的需求,之前介绍了一款非常好用的工具EasyPoi。有读者提出在数据量大的情况下,EasyPoi占用内存大,性能不够好。今天给大家推荐一款性能更好的Excel导入导出工具EasyExcel,希望对大家有所帮助!
4 0
SpringBoot整合RabbitMQ实现消息的发送与接收,确认消息,延时消息
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。
8 0
Spring全家桶--SpringCloud(中级)(三)
Spring全家桶--SpringCloud(中级)(三)
2 0
多线程基础知识(中)
多线程基础知识(中)
2 0
多线程基础知识(下)
多线程基础知识(下)
3 0
docker部署kcloud过程
docker部署kcloud过程
4 0
docker 部署 apollo
docker 部署 apollo
3 0
+关注
423
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载