1. ホーム
  2. java

[解決済み] Javaにおける宣言と定義の違いは何ですか?

2023-05-22 15:46:02

質問

2つの用語の間で非常に混乱しています。私はstackoverflowでチェックし、C + +のための同様の質問がありますが、javaのためのものではありません。

どなたか、javaの2つの用語の違いを説明していただけませんか?

どのように解決するのですか?

概念の違いは簡単です。

  • 宣言 : あなたは を宣言しています。 を宣言していることになります。については何も言いません。 そのクラスや関数がどのようなものかについては何も言わず、ただそれが存在すると言うだけです。

  • 定義 : あなた 定義 クラス、関数、変数など、何かをどのように実装するかを定義します。 何を ということです。

Javaでは というように、両者の間にほとんど違いはなく、形式的に言えば、宣言には識別子だけでなく、その定義も含まれます。以下、個人的にこの用語をどのように解釈しているかを詳しく説明します。

  • クラス : Javaでは、C++のように宣言と定義を分けていません(ヘッダファイルやcppファイルで)。宣言した時点で定義するのです。

  • 機能 : インターフェイス(あるいは抽象クラス)を書いているときは、関数を定義せずに宣言していると言えるでしょう。しかし、通常の関数は、宣言された場所で必ず定義されます。関数本体を定義と見なせばよいでしょう。

  • 変数 : 変数 宣言 は次のようになります。

      int x;
    
    

(変数 x が存在し、型が int ) ローカル変数かメンバーフィールドかどちらかです。Javaでは x から を定義します。 への代入によって決定される、それが保持しなければならないどのような値であるかを除いて、可能です。

私がどのように用語を使用しているかを大まかにまとめると、以下のようになります。

abstract class SomeClass {                // class decl.
                                          //                           \
    int x;                                // variable decl.            |
                                          //                           |
    public abstract void someMethod();    // function decl.            |
                                          //                           |
    public int someOtherMethod() {        // function decl.            |
                                          //                           | class
        if (Math.random() > .5)           // \                         | def.
            return x;                     //  |  function definition   |
        else                              //  |                        |
            return -x;                    // /                         |
                                          //                           |
    }                                     //                           |
}                                         //                          /