公共静态方法和公共方法之间有什么区别?为什么要使用公共静态方法?
答案 0 :(得分:11)
Math类的方法是静态的。所以,在做
Math.round(average)
Math类本身没有改变你所做的 - 它只返回一个值或对你传递的值起作用。
所以 - 静态方法对实用程序很有用。像
这样的事情StringUtils.removeWhitespaceFrom(textContent:String):String
或
BrowserUtils.openInNewWindow(url:String):void
您使用静态方法处理其他任何事情都是非常不寻常的。不要使用像'getInstance()'这样的静态来创建单例 - 而是查看依赖注入的框架。
答案 1 :(得分: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;
}
}
答案 2 :(得分:3)
静态方法是一种非特定于类(对象)实例的方法,它们是不允许包含此引用的方法,您可以直接通过类访问它们(而不是对象实例)
答案 3 :(得分:2)
为了使您的概念清晰,假设您想知道您的类被实例化了多少次,那么每次创建对象时,您将在类构造函数中使用静态变量计数器。
然后你必须使用静态方法来访问这些数据,否则你可以声明你的变量public或default,并使用类名访问它,但这违反了OOP主体。这是一个小例子
公共班级CAR {
private static var Counter:int = 0;
private function CAR(){Counter ++; }
public static function ReturnTotalCarInstances():int { 返回柜台; }
}
静态变量有其优点,这就是为什么它在大多数编程语言中提供的原因。计数实例是静态变量的小用途。它们的使用范围更广。重点是它用于在Class的所有对象之间全局共享数据。