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的类加载顺序表现上是一致的

目录
相关文章
|
3月前
|
C++
成员初始化表的执行顺序与顺写顺序无关
成员初始化表的执行顺序与顺写顺序无关
25 0
|
8月前
|
Java Kotlin
Kotlin 中初始化块、初始化的顺序、lateinit延迟初始化详解
Kotlin 中初始化块、初始化的顺序、lateinit延迟初始化详解
58 0
|
Java
JAVA数组批量设值(初始化)的办法
JAVA数组批量设值(初始化)的办法
124 0
|
编译器 C++
C++类对象构造顺序
C++类对象构造顺序
38 0
C++类对象构造顺序
|
存储
循环内不要不断创建对象引用
循环内不要不断创建对象引用
157 0
|
缓存 Java 测试技术
让线程按顺序执行8种方法
  本文使用了7中方法实现在多线程中让线程按顺序运行的方法,涉及到多线程中许多常用的方法,不止为了知道如何让线程按顺序运行,更是让读者对多线程的使用有更深刻的了解。 使用的方法如下:
123 0
|
架构师 Java Spring
静态代码块、静态变量,构造代码块、实例变量的执行顺序和继承逻辑(下)
静态代码块、静态变量,构造代码块、实例变量的执行顺序和继承逻辑(下)
静态代码块、静态变量,构造代码块、实例变量的执行顺序和继承逻辑(下)
|
Java 编译器 Spring
静态代码块、静态变量,构造代码块、实例变量的执行顺序和继承逻辑(上)
静态代码块、静态变量,构造代码块、实例变量的执行顺序和继承逻辑(上)
|
JSON 前端开发 Java
探讨:在循环前与在循环中创建对象的区别
后端获取的数据格式为 List ,而前端需求的数据格式为 Json。因此,后端需要将数据重新组装为 Json 格式才能传给前端接收。而在数据重新组装的过程中会遇到这样的问题,在将对象从 List 逐个获取放入另一个 List 时,这个中间对象是在对 List 循环之前创建还是循环中创建。
1941 0

热门文章

最新文章