公共静态方法与公共方法
Posted
技术标签:
【中文标题】公共静态方法与公共方法【英文标题】:Public static methods vs public methods 【发布时间】:2011-04-19 10:27:02 【问题描述】:公共静态方法和公共方法有什么区别?为什么要使用公共静态方法?
【问题讨论】:
【参考方案1】:Math 类的方法是静态的。所以,在做
Math.round(average)
Math 类本身不会因您所做的事情而改变 - 它只返回一个值或对您传递的值起作用。
所以 - 静态方法对实用程序很有用。像
StringUtils.removeWhitespaceFrom(textContent:String):String
或
BrowserUtils.openInNewWindow(url:String):void
在其他任何事情上使用静态方法是非常不寻常的。不要使用像 'getInstance()' 这样的静态方法来创建单例 - 而是查看依赖注入的框架。
【讨论】:
【参考方案2】:静态方法是不特定于类(对象)的任何实例的方法,它们是不允许包含此引用的方法,您可以通过类直接访问它们(而不是对象实例)
【讨论】:
【参考方案3】:静态方法可以用作重载的构造函数。 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】:为了让你的概念更清楚,假设如果你想知道你的类被实例化了多少次,你将在你的类构造函数中使用静态变量 counter,每次创建你的对象。
然后您必须使用静态方法来访问此数据,否则您可以将变量声明为 public 或 default 并使用类名访问它,但这违反了 OOP 原则。这是一个小例子
公共类 CAR
private static var Counter:int=0;
私有函数 CAR() Counter++;
公共静态函数 ReturnTotalCarInstances():int 返回计数器;
静态变量有它们的好处,这就是大多数编程语言都提供它的原因。计数实例是静态变量的小用途。它们的使用范围要大得多。重点是用于在 Class 的所有对象之间全局共享数据。
【讨论】:
以上是关于公共静态方法与公共方法的主要内容,如果未能解决你的问题,请参考以下文章