公共静态方法 vs 公共方法

7
公共静态方法和公共方法有什么区别?为什么要使用公共静态方法?
4个回答

11

Math类的方法是静态的。因此,在使用它们时,不需要创建Math的实例。

Math.round(average)

你所做的不会改变Math类本身,它仅返回一个值或对你传递的值进行操作。

因此,静态方法非常适用于工具类。例如:

StringUtils.removeWhitespaceFrom(textContent:String):String
或者
BrowserUtils.openInNewWindow(url:String):void

很少有情况下你会使用静态方法。不要使用像 'getInstance()' 这样的静态方法来创建单例 - 考虑使用依赖注入框架。


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;
    }
}

4

静态方法是指不属于类(对象)任何实例的方法。它们不允许包含this引用,并且可以直接通过类访问,而不是对象实例。


2
为了让您的概念更加清晰,假设您想知道您的类已经被实例化了多少次,您将在类构造函数中使用静态变量计数器,每次创建对象时都会增加。然后,您必须使用静态方法来访问这些数据,否则您可以将变量声明为公共或默认,并使用类名访问它,但这违反了面向对象编程原则。以下是一个小例子: public class CAR { private static var Counter:int=0; private function CAR(){ Counter++; } public static function ReturnTotalCarInstances():int { return Counter; } }
静态变量有其好处,因此它在大多数编程语言中都提供了。计算实例是静态变量的一种小用途,它们在更大的范围内使用。主要问题是它用于在类的所有对象之间全局共享数据。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接