14

MATLAB プログラミング スキルを、より一貫性のある厳密な Java コーディングと統合することにしました。したがって、あまりにも素朴な質問にならないことを願っています。

他の多くのプログラム言語がそうであるように、Java が関数をmethodsではなく として参照する本当の理由があるかどうか知りたいです。functions

などの手続き型言語に比べてインナーOOPJavaの性質によるものC/C++でしょうか。または、他に重要な (または微妙な) 理由はありますか?

前もって感謝します。

4

4 に答える 4

5

メソッドと関数には少し違いがあります。

関数は、その名前でいつでも呼び出すことができる単なるコードであり、パラメーターとも呼ばれる引数を渡すことができ、関数の戻り値など、任意の関数から結果を取得することもできます。

ただし、メソッドはその名前で呼び出されるコードですが、任意のオブジェクトに関連付けられています。パラメータをメソッドに渡すこともできますし、メソッドから戻り値を取得することもできますが、それらは常にいくつかのオブジェクトに関連付けられます。

編集済み

Javaはオブジェクト指向です。ほとんどの場合、Java コードをクラスなしで実行することはできませんが、C++ ではクラスなしでコードを実行できます。そのため、Java にはクラスがあり、コードはクラスに記述されるため、それらはオブジェクトに関連付けられるため、関数ではなくメソッドと呼ばれます。

しかし、C++ では、値を明示的に渡すことで呼び出すことができる関数をいくつか持つことができます。

簡単に言うと、メソッドはオブジェクトに関連する関数です。

于 2013-05-02T09:50:03.807 に答える
3

私の意見では、この図http://www.jot.fm/issues/issue_2008_03/article4/images/figure2.gif

一、二、三次元の方法発送

http://www.jot.fm/issues/issue_2008_03/article4/から 、OO と手続き型プログラミングの主な違いの 1 つを理解するのに役立ちます。基本的な考え方は、

手続き型プログラミングは、計算単位を名前に関連付けるために 1 つの次元のみを提供します。ここでは、プロシージャの呼び出しまたは名前がプロシージャの実装に直接マップされます。図では、m1 を呼び出すと、プロシージャ m1 の唯一の実装を呼び出す以外に選択肢がありません。

その間

オブジェクト指向プログラミングは、手続き型プログラミングに名前解決の別の次元を追加します。メソッドまたはプロシージャ名に加えて、メッセージ ディスパッチでは、メソッドを検索するときにメッセージ受信者が考慮されます。図 2b には、メソッド m1 の 2 つの実装が示されています。適切なメソッドの選択は、メッセージ名 m1 だけでなく、実際のメッセージの受信者 (ここでは Ry) にも依存します。

図 (c) の 3 番目のセクションは、サブジェクト指向プログラミングを指します。このプログラミングでは、オブジェクト (呼び出されたメソッド) の動作は、オブジェクトの状態だけでなく、それを呼び出す (または観察する) サブジェクトにも依存します。 . ただし、これは実際には質問の範囲外です。

于 2013-05-02T09:56:43.910 に答える
1

これには多くの不必要なドラマを考えずにはいられません。「メソッド」は、パラメータを必要とする場合と必要としない場合があり、値を返す場合と返さない場合があるサブルーチンに対して、Javaがたまたま使用する名前にすぎませんか?

たとえば、有効な「メソッド」は、オブジェクト指向の純度、「関数」の標準的な定義などに入ることなく、次のようになります。以下の両方とも、実行時にオブジェクトの現在の「状態」(インスタンス変数の値) を使用する場合と使用しない場合があります。

// kind of a function, returns a value
public int calculateStuff(int param1)

// more of a procedure, presumably just "does stuff", returns nothing
public void doStuff(int param1)
于 2013-05-02T10:13:27.833 に答える
0

彼らは同じです。C++ は通常、それらを関数と呼びます。Java では通常、これらをメソッドと呼びます。

メソッドは通常、クラスに関連付けられています。

「クラス関数」という言葉も時折耳にしますが、これは単なるメソッドです。

関係ありません。電話をかければ、相手はあなたが話していることがわかります。

于 2013-04-25T19:52:40.157 に答える