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