【问题标题】:difference between property and method of an instance实例的属性和方法的区别
【发布时间】:2013-09-06 13:30:25
【问题描述】:

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

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

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

与方法相比

myFirstObject.startDrag();

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

【问题讨论】:

    标签: actionscript-3 oop


    【解决方案1】:

    属性具有 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
    

    【讨论】:

    • 这个问题是用 ActionScript 3 标记的,你为什么要在 vb.net 上发布所有事情的答案。 AS3 中的属性不需要定义为“访问”或“分配”类属性的 getter 和 setter。
    【解决方案2】:

    属性和方法的相似之处在于它们都是作为接受参数的过程来实现的。通常,属性存储对象的数据,方法是可以要求对象执行的操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-14
      • 2010-11-21
      • 2013-06-12
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 2012-08-13
      相关资源
      最近更新 更多