7

公共静态方法和公共方法有什么区别?为什么要使用公共静态方法?

4

4 回答 4

11

Math 类的方法是静态的。所以,在做

Math.round(average)

Math 类本身不会因您所做的事情而改变——它只返回一个值或作用于您传递的值。

所以 - 静态方法对实用程序很有用。像

StringUtils.removeWhitespaceFrom(textContent:String):String

或者

BrowserUtils.openInNewWindow(url:String):void

您将静态方法用于其他任何事情是非常不寻常的。不要使用像'getInstance()'这样的静态来创建单例 - 而是查看依赖注入的框架。

于 2010-09-30T16:10:01.500 回答
4

静态方法可以用作重载的构造函数。ActionScript 没有函数重载,所以有时我会写如下内容:

public class Foo {
    public static function fromBar(bar:Bar):Foo {
        var foo:Foo = new Foo();
        ... //initializing foo object from bar
        return foo;
     }

    public static function fromBaz(baz:Baz):Foo {
        var foo:Foo = new Foo();
        ... //initializing foo object from baz
        return foo;
    }
}
于 2010-09-30T16:57:49.147 回答
4

静态方法是不特定于类(对象)的任何实例的方法,它们是不允许包含此引用的方法,您可以通过类直接访问它们(而不是对象实例)

于 2010-09-30T15:41:06.813 回答
2

为了使您的概念更清楚,假设您想知道您的类被实例化了多少次,您将在每次创建对象时在类构造函数中使用静态变量 counter。

然后您必须使用静态方法来访问此数据,否则您可以将变量声明为 public 或 default 并使用类名访问它,但这违反了 OOP 原则。这是一个小例子

公共类汽车{

私有静态变量计数器:int = 0;

私有函数 CAR(){ Counter++; }

公共静态函数 ReturnTotalCarInstances():int { 返回计数器;}

}

静态变量有它们的好处,这就是大多数编程语言都提供它的原因。计数实例是静态变量的小用途。它们的使用范围要大得多。要点是它用于在 Class 的所有对象之间全局共享数据。

于 2010-09-30T16:41:29.693 回答