1. ホーム
  2. java

[解決済み] なぜ静的メソッドはメソッドとみなされるのですか?

2022-05-31 20:13:17

質問

ある講座のためにコードの説明を書いているのですが、誤って methodfunction と入れ替えていた。私はもう一度見直して表現を修正することにしましたが、私の理解に穴が開くことになりました。

私が理解しているところでは、サブルーチンは function であり、クラスのインスタンスに作用しない (その効果は明示的な入出力に限定される) 場合は method であり、クラスのインスタンスに作用する場合は です (インスタンスに副作用を与えて不純にする可能性があります)。

があります。 に良い議論があります。 をご覧ください。受け入れられる答えの定義では、静的な method は実際には関数であるべきです。なぜなら、インスタンスは決して暗黙的に渡されることはなく、それはどんなインスタンスのメンバーにもアクセスできないからです。

しかし、このことを念頭に置くと、静的な methods は実際には関数であるべきではないでしょうか?

その定義により、それらはクラスの特定のインスタンスに作用しません。それらは関係のためにクラスに "tied"されるだけです。私は、静的サブルーチンをメソッドと呼ぶ、格好のサイトをいくつか見てきました ( オラクル , フレドサウルス , プログラミングの簡略化 を参照してください)。したがって、彼らはすべて専門用語を見落としているか、私が何かを見逃しているかです(私の推測では後者です)。

表現が正しいかどうか確認したいのですが。

誰かこれをクリアにしてくれませんか?

どのように解決するには?

この引用元は 8.4.3.2 が参考になるかもしれません。

と宣言されているメソッドは static と呼ばれるものは クラスメソッド .

宣言されていないメソッド static と呼ばれます。 インスタンスメソッド [...].

  • クラスメソッド:クラスに関連付けられています。
  • インスタンスメソッド: インスタンスに関連付けられます。

Javaはただ、"think object-oriented"を望んでいるのです。また、静的メソッドは、状態を含む可能性のある周囲のスコープにアクセスできます。ある意味、クラスはオブジェクトそのもののようなものです。