zoukankan      html  css  js  c++  java
  • AS3.0中类初始化的顺序

    我做了一个比较,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的类加载顺序表现上是一致的

查看全文
  • 相关阅读:
    GUI线程安全详解(二)
    如何用BlazeDS前后台数据交互
    定制Flex菜单图标
    Web App第三方组件PKDashcode&Sencha
    如何用BlazeDS更改图片
    GUI线程安全详解(一)
    Flex Spark皮肤定制
    GUI线程安全详解(三)
    (C# 基础) Array ( Copy, Clone, Clear etc.)
    System.ArgumentException: Destination array was not long enough.
  • 原文地址:https://www.cnblogs.com/meteoric_cry/p/1902583.html
  • Copyright © 2011-2022 走看看