属性和实例方法之间的区别

时间:2013-09-06 13:30:25

标签: actionscript-3 oop

我正在阅读这里的教程:http://www.adobe.com/devnet/actionscript/learning/oop-concepts/objects-and-classes.html和点符号部分的第二段。它使用ActionScript 3中的“Sprite”类。本教程创建了一个Sprite类的实例,并将其命名为myFirstObject。它说..

“然后,使用该引用变量和点表示法,将值分配给实例的x和visible属性,并调用startDrag和stopDrag方法。”

我注意到属性后面没有()。例如: myFirstObject.x = 300;

与方法相比

myFirstObject.startDrag();

那么,实例的属性和方法之间有什么区别?我认为如果我能看到Sprite类会有所帮助,但是当我尝试google时,我无法找到它。

2 个答案:

答案 0 :(得分:0)

属性具有Get()和Set()方法,允许您使用相同的调用来获取或分配值。为属性分配值时,将调用Set方法。检索值时,您正在使用Get方法。属性会根据操作自动调用相应的Get或Set方法。

为了帮助您可视化设置,这里有一个示例属性(VB.Net):

Private _name As String

Public Property Name() As String
    Get
        Return _name
    End Get
    Private Set(ByVal value As String)
        _name = value
    End Set
End Property

要调用它,您可以使用:

MyObject.Name = "Test" <- Sets the name to test
MsgBox("The name is: " & MyObject.Name) <- Gets the value of name

虽然这个例子在VB.Net中,但理论仍然是相同的。

另一方面,方法相当于Get或Set例程。作为一种方法,您必须调用它并在括号内提供参数。即使它没有,你仍然需要()。如果要更新变量,则必须将值传递给方法,而不是将其设置为等于值。

以下是一个类似的例子:

Private _name As String

Public Function Name(Optional ByVal strName as String = "") as String
    If strName <> "" then
        _name = strName
    End If
    Return _name 
End Function

以下是如何使用它的类似示例:

MyObject.Name("Test") <- Sets the name to test
MsgBox("The name is: " & MyObject.Name()) <- Gets the value of name

答案 1 :(得分:0)

属性和方法类似,两者都是作为接受参数的过程实现的。通常,属性存储对象的数据,方法是可以要求对象执行的操作。