2011-06-23 104 views
0

您可以在类的构造函数之外声明变量,那么AS3中的构造函数的意义何在?AS3构造函数 - 重点是什么?

例子:

package { 
    public class traceText { 
     var i:String = "Hello!"; 
     public function traceText() { 
     } 
     public function sayHello() { 
      trace(i); 
     } 
    } 
} 

import traceText; 
j = new traceText; 
j.sayHello(); 

我知道你不能调用函数,但在执行中类代码的时候是什么构造的目的是什么?为什么不允许功能并简化?

我道歉,如果我无知,我正在学习AS3

回答

5

在您的例子有没有用一个构造函数。事实上,如果你将它遗留下来,编译器将会继续前进,并为你添加完全相同的东西。

构造函数的目标是给类设计者一个位置来分配资源。

您也可以在构造函数中定义的参数来强制类消费者提供参数没有这些类将无法正常工作的构造。在你的简单类中情况并非如此,因此构造函数是多余的。

1

由于您的问题的答案显而易见,我有一种感觉,我可能误解了它。所以请让我知道如果是这样的话。

构造函数包含将在您的类的实例创建后立即运行的代码。

一个很好的例子是把以下内容构造:

addEventListener(MouseEvent.CLICK, _click); 

让你的类的所有新实例将“都配备”以应用此事件侦听器。

如果你不需要使用构造函数,那么你不需要像你的例子那样手动创建;它将在您编译应用程序时自动创建。

+0

等待,当你创建,创建一个类的新实例,并非所有的代码被执行?如果这是代码,那么为什么'var i:String =“Hello!”;'工作? – apscience

+0

我不愿意回答他的问题,因为这个问题似乎挺直的。我想,也许gladoscc不明白的使用类,而不是时间表,但再我可能是错的。 – Taurayi

+0

好的做法是,即使将它留空,也要始终创建构造函数。如果编译器找不到构造函数,将自动生成一个构造函数。另一个好的做法是范围你的类变量公共变量我:String =“Hello!”;在你的情况下,我将其范围作为私人,因为有一个函数“sayHello()”用于访问它。 –

3

constructor是部分object oriented programming范式,并且独立于AS3:

在面向对象的编程中, 构造在一类被称为在创建的 的对象的特殊类型的 子程序的。它准备使用新对象 ,通常接受参数 ,构造函数使用这些参数设置首次创建对象时所需的任何 成员变量。 more...

相关问题