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

  • 相关阅读:
    Asp.net MVC routing 路由
    Asp.net MVC3 企业网站系统高仿博客园 首页左侧列表页面 实现效果
    Asp.net MVC 3 开发简单的企业系统开篇数据库
    Asp.net MVC 3 开发企业网站系统仿照博客园部分功能总体设计
    [转]C语言中的文件格式化读写函数:fprintf和fscanf
    如何讀取/寫入文字檔? (IC Design) (Verilog)
    Verilog状态机的编写学习
    [转] verilog中的integer和reg的差别
    verilog常用系统函数以及例子
    独立写testbench注意的几点
  • 原文地址:https://www.cnblogs.com/meteoric_cry/p/1902583.html
  • Copyright © 2020-2023  润新知