java_オブジェクト(コンストラクション関数とコンストラクションコードブロック)

5146 ワード

オブジェクト:実際に存在する唯一のもの.
クラス:同じタイプの物事の公共属性と公共行為の抽出.
JAvaオブジェクト向け言語:
核心思想:適当な対象を探して適当なことをする.
オブジェクトの検索方法:
   : sun          ,                  。
   :         ,          。

ノートを整理する過程で、自分に疑問のある概念をコードで検証したり、ひっくり返したりします.
カスタムクラス3ステップ:1.クラスをカスタマイズします.classクラス{物事の共通属性メンバー変数を使用して記述
                     。
      }
2.          。
3.   (  )              。

メンバー変数とローカル変数の違い:1.カスタムの位置の違い:1.メンバー変数はメソッドの外、クラス内に定義された変数です.2.ローカル変数はメソッド内に宣言された変数です.2.役割の違い:1.メンバー変数の役割は、物事の属性を記述します.2.ローカル変数の役割は、メソッド内で使用される変数を提供することです.3.ライフサイクルの違い.1.メンバー変数はオブジェクトの作成に伴って存在し、オブジェクトの消失に伴って消滅する.2.ローカル変数は、対応するメソッドを呼び出してその変数を作成する文を実行したときに存在し、自分の役割ドメインを出たらすぐにメモリから消える.4.初期値の違い:1.メンバー変数にはデフォルトの初期値がある.2.ローカル変数量にはデフォルトの初期値はありません.使用するには初期化する必要があります.
匿名オブジェクト:参照タイプ変数が指定されていないオブジェクトを匿名オブジェクトと呼びます.
匿名オブジェクトの詳細:1.匿名オブジェクトのプロパティは、常に取得できないため、一般的には付与されません.2.両方の匿名オブジェクトが同じオブジェクトであることは永遠に不可能です.
匿名オブジェクトのメリット:書き方を簡略化します.
匿名オブジェクトの適用シーン:1.オブジェクトのメソッドを1回呼び出すと、そのオブジェクトが使用されなくなります.この場合、匿名オブジェクトを使用できます.2.実パラメータとして関数を呼び出すことができます.
パッケージ:
カプセル化の手順:1.privateを使用してカプセル化する必要がある属性を修飾する.2.必要に応じてgetまたはsetメソッドの設定と属性の取得を提供する.
パッケージの利点:1.データのセキュリティが向上しました.2.操作が簡単です.3.実装が隠されています.
注:一般的なエンティティクラスのプロパティはカプセル化されます.
JAvaはオブジェクト向けの言語です.「万物はすべてオブジェクト」:どんなものでもクラスで記述できます.
需要:javaクラスを使用して赤ちゃんを説明します.
実生活では2種類の赤ちゃんがいて、1つは生まれてから名前(白戸)を備え、もう1つは生まれてから名前がついた(黒戸)です.
コンストラクション関数:
コンストラクション関数の役割:対応するオブジェクトを初期化します.
コンストラクション関数の定義のフォーマット:
        (    ){
       ...
}

コンストラクション関数の詳細:1.コンストラクション関数には戻り値タイプがありません.2.コンストラクション関数の関数名はクラス名と一致する必要があります.3.コンストラクション関数は手動で呼び出すのではなく、対応するオブジェクトを作成するときにjvmが対応するコンストラクション関数をアクティブに呼び出す必要があります.4.クラスにコンストラクションメソッドが明示的に書かれていない場合、javaコンパイラは、クラスにパラメータのないコンストラクタを追加します.5.クラスにコンストラクタメソッドが明示的に書かれている場合、javaコンパイラはクラスにパラメータのないコンストラクタを追加しません.6.コンストラクタは、1つのクラスに関数をリロードする形で複数存在することができます.
/*コードブロックの構築:
コードブロックを構築する役割:オブジェクトを統一的に初期化します.
コンストラクション関数の役割:対応するオブジェクトを初期化します.
構築コードブロックのフォーマット:
{
         
}

注:コードブロックを構築するカッコは、メンバーの位置にある必要があります.
コードブロックのカテゴリ:1.コードブロックを構築します.2.ローカルコードブロック.カッコはメソッド内にあります.役割:ローカル変数のライフサイクルを短縮し、メモリを少し節約します.3.静的コードブロックstatic
コードブロックを構築する上で注意すべき点:1.javaコンパイラがjavaソースファイルをコンパイルする際、メンバー変数の宣言文をクラスの先頭に繰り上げる.2.メンバー変数の初期化作業は、実はコンストラクション関数で実行される.3.javaコンパイラによってコンパイルされると、コンストラクション関数でコンストラクションブロックを構築するコードブロックが実行され、コンストラクション関数の前に実行され、コンストラクション関数の中コードが最後に実行されます.4.メンバー変数の表示初期化とコンストラクションコードブロックのコードは、現在のコードの順序で実行されます.
*/
class Baby{

    int id; //   

    String  name;  //  

    //     ...
    {
        //System.out.println("           ......");

    }

    //      
    public  Baby(int i , String n){
        id  = i;
        name = n;
    }

    //      
    public Baby(){
    }

    public void cry(){
        System.out.println(name+"   ...");
    }   
}



class Demo4 
{
    public static void main(String[] args) 
    {
        Baby b1 = new Baby(110,"  ");  //          
        System.out.println("  :"+ b1.id + "   :"+b1.name);
        /*
        System.out.println("  :"+ b1.id + "   :"+b1.name);

        new Baby(112,"  ");
        new Baby();
        */
        /*
        new Baby(110,"  ");
        new Baby(112,"  ");
        new Baby();
        */
    }
}

疑問:オブジェクトを作成すると、jvmは対応する構造方法を呼び出します.では、私たちは以前構造方法を学んでいませんでした.では、以前オブジェクトを作成するとき、jvmも構造方法を呼び出しましたか.もしありますか.構造方法はどこから来ましたか.
           , java               。

jdkはjava開発ツール(javap.exe)を提供し、逆コンパイルを行います.
JAvap逆コンパイルツールの使用形式:
    javap -c -l -private   

疑問:javaコンパイラが追加したパラメトリック構造メソッドの権限修飾子は何ですか?クラスの権限修飾と一致しています.
コンストラクション関数と一般関数の違い:1.戻り値タイプの違い:1.コンストラクション関数に戻り値タイプはありません.2.一般関数には戻り値タイプがあります.関数に戻り値がなくても、戻り値タイプにはvoidを書きます.2.関数名の違い:1.コンストラクション関数の関数名はクラス名と一致する必要があります.2.一般関数の関数名は記号のみです識別子に一致するネーミング・ルールです.3.呼び出し方法の違い:1.コンストラクション関数は、オブジェクトを作成するときにjvmによって呼び出されます.2.一般関数は、オブジェクトを使用して呼び出されます.1つのオブジェクトは、通常の関数を複数回オブジェクト化できます.4.作用の違い:1.コンストラクション関数の役割は、オブジェクトを初期化するために使用されます.2.一般関数は、1つのオブジェクトを記述するために使用されます.類物事の公共行為.