AS3.0中类初始化的顺序

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

static {

//TODO….

}

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

这里侧重点在as3的代码

在同一包下若有三个类:

main.as<用于测试>

Parent.as 父类

SubClass.as 子类

其中SubClass继承至Parent

父类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();
		}
		
	}
	
}

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

运行的结果显示如下:

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

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

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

(2)初始化成员变量

(3)调用构造器

而java中:

运行的结果:

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

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

Go 语言数据类型

在 Go 编程语言中,数据类型用于声明函数和变量。 数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充...

32670
来自专栏阮一峰的网络日志

Ramda 函数库参考教程

学习函数式编程的过程中,我接触到了 Ramda.js。 我发现,这是一个很重要的库,提供了许多有用的方法,每个 JavaScript 程序员都应该掌握这个工具。...

93980
来自专栏Micro_awake web

JavaScript实现八大内部排序算法

? 注:基数排序中:r是关键字的基数,d是长度,n是关键字的个数 1.插入排序 基本思想:在序号i之前的元素(0到i-1)已经排好序,本趟需要找到i对应的元素...

25390
来自专栏进击的君君的前端之路

字符串与JSON

77930
来自专栏向治洪

Kotlin之基本语法

在今年Google IO大会上Google已经明确kotlin作为为Android第一官方语言的地位。我相信Google的决意,就像当初毫不犹豫的抛弃eclip...

23580
来自专栏一个爱吃西瓜的程序员

一文读懂正则表达式的基本用法

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过...

11410
来自专栏C++

python笔记:#005#算数运算符

19520
来自专栏desperate633

深入理解javascript中的继承机制 之 12种继承模式总结原型链法仅从原型继承临时构造器原型属性拷贝所有属性拷贝(浅拷贝)深拷贝原型继承法扩展与增强模式多重继承法寄生式继承借用构造函数:构造器于

之前我们介绍了多种javascript中的继承方式,最后我们开始总结概括这些继承方式,先将javascript中的继承分类,根据不同的条件,可以分成不同的类别。...

11120
来自专栏C/C++基础

C++11 变参模板

版权声明:感谢您对博文的关注!校招与社招,有需要内推腾讯的可以QQ(1589276509)or 微信(louislvlv)联系我哈,期待您的加入。 ...

50920
来自专栏老九学堂

【必读】C语言基础知识大全

C语言程序的结构认识 用一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使小伙伴对c语言有个初步认识。 例1:计算两个整数之和的c程...

87680

扫码关注云+社区

领取腾讯云代金券