public staticメソッドとpublicメソッドの違いは何ですか?なぜパブリック静的メソッドを使用するのですか?
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;
}
}
概念を明確にするために、クラスがインスタンス化された回数を知りたい場合は、オブジェクトが作成されるたびに、クラスコンストラクターで静的変数カウンターを使用するとします。
次に、静的メソッドを使用してこのデータにアクセスする必要があります。そうしないと、変数をpublicまたはdefaultとして宣言し、クラス名でアクセスできますが、これはOOPプリンシパルに違反します。これが小さな例です
パブリッククラスCAR{
private static var Counter:int = 0;
プライベート関数CAR(){Counter ++; }
public static function ReturnTotalCarInstances():int {return Counter; }
}
静的変数には、ほとんどのプログラミング言語で提供されるという利点があります。インスタンスのカウントは、静的変数の小さな使用です。それらははるかに広い範囲で使用されます。重要な点は、クラスのすべてのオブジェクト間でデータをグローバルに共有するために使用されることです。