A
独自のインスタンス変数を持つクラスがあるとします。メソッドと呼ばれるメソッドdoSomething()
がありstatic
ます。ここで、ポインタとしてA
別のクラスを追加します。B
クラス内で言うB
と、いくつかのロジックを実行し、に含まれるコードを実行する必要があると判断しdoSomething()
ます。ただ言っても大丈夫A.doSomething()
ですか?そして、呼び出されたインスタンスがある場合、A
のa
メソッドa
はdoSomething()
呼び出されますか?
4 に答える
呼び出すA.doSomething()
と、その静的メソッドが実行されます。静的メソッドはクラスのオブジェクトまたはインスタンスに属していないため、a
「s」と言っても意味がありません。doSomething
静的メソッドは特定のインスタンスに属していません。したがって、A.doSomething()を呼び出す場合、Aのインスタンスが0、1、または100万であるかどうかは関係ありません。1つのメソッドが呼び出されます。
あなたの最初の質問への答え:「私がただ言うのは大丈夫A.doSomething()
ですか?」
はい、そうです。他の回答でも指摘されているように... doSomething()
beingstatic
はクラスメソッドであるため、呼び出しにはAのオブジェクトを作成する必要があります。
2番目の質問への答え:「そして、呼び出されたインスタンスがある場合、のメソッドは呼び出されますか?A
」
実際のところ、そうなるでしょうが、それは言うのと似ています。したがって、そのように呼び出すことは意味がありません。どちらかといえば、後でコードを読んだときに混乱が増します。a
a
doSomething()
A.doSomething()
私はあなたの用語のいくつかに質問しますが(私はあなたがあなたが話していることを知っていると感じますが、あなたはそれを完全に言っていませんでした)、あなたの質問に答えるために、それはできないからです。静的メソッドはクラスに関連付けられています。a.staticMethod()の呼び出しは、A.staticMethodと同じです。どちらもまったく同じことをします。