【Java】インスタンス化って何?クラスとの違いを把握しよう
  • facebookページ
  • twitterページ
  • 2021.04.26

    【Java】インスタンス化って何?クラスとの違いを把握しよう

    Javaでのプログラミングにおいて、初心者が最初の壁として直面するのが「クラス」と「インスタンス」に対する理解です。

    本記事では、Javaプログラミングにおけるクラスのインスタンス化について初心者向けにご紹介していきたいと思います。

    Javaでインスタンス化するって何?


    Javaの開発では、「インスタンス化」という言葉が頻繁に利用されますが、意味を理解するためには「クラス」と「インスタンス」の関係性を把握しておく必要があります。

    クラスとは

    まずクラスに関してですが、プログラミングでは設計図に例えられることが多いようです。

    プログラムを実行する際、値を格納するための変数やメソッドと呼ばれる処理がまとめて記述されます。

    Javaに限らずオブジェクト指向のプログラミング言語ではクラスの概念が利用されます。

    インスタンスとは

    インスタンスは、上述したクラスを実際に利用可能な状態にしたオブジェクトを指します。

    車の設計図があっても実際に「車本体」が作成されないと利用者が乗ることは出来ないように、プログラミングにおいてもクラス(設計図)をインスタンスとして変換する作業が必要です。

    このインスタンスを作成する工程のことを「インスタンス化」と表現します。

    インスタンス化するメリット

    クラスをインスタンス化することによって、1つのクラスから複数のインスタンスを作成することが可能です。

    例えば車の例では、色の異なる車体や最高速度の異なる車体など、様々な種類の車を1つのクラスから作成することが出来ます。

    メモリさえ確保出来れば、いくらでも拡張して新たなオブジェクトを作成出来ることがインスタンスを利用するメリットです。

    Javaにおけるインスタンス化の記述方法とは


    では実際にJavaでインスタンス化する方法について説明していきます。

    new演算子を利用

    クラスからインスタンスを作成するわけですが、「new演算子」を使用することで実現可能です。

    例えば「Car」クラスから「redCar」というインスタンスを作成する場合は下記のように記述します。

    インスタンス化したオブジェクトを利用

    「Car」クラスを下記のように定義していると仮定して、インスタンス化したオブジェクトの利用方法を説明していきます。

    「Car」クラスの最高速度を指定し、定義された「run」メソッドを実行するには下記のように記述します。

    ポテパンダの一言メモ

    インスタンス名.フィールド変数」でクラスに定義されたフィールド変数にアクセス可能です。
    メソッドにアクセスするには「インスタンス名.メソッド名」と記述します。

    インスタンス化をJavaのサンプルコードで確認


    実際にサンプルコードでインスタンス化の処理内容を詳しく確認していきましょう。

    サンプルコード

    実行結果が下記です。

    サンプル解説

    サンプルコードでは、「Car」クラスを定義して、「Main」クラスの「main」メソッドからインスタンス化して利用しています。

    インスタンス化

    今回のサンプルでインスタンス化している部分は4行目と5行目の処理が該当します。

    14行目以降で定義している「Car」クラスをインスタンス化し、「car1」「car2」という2つのオブジェクトを作成しています。

    コンストラクタ

    4行目と5行目のインスタンス化処理で呼び出されるのが、19~22行目の処理と24~27行目の処理でコンストラクタと呼ばれる初期化処理です。

    サンプルの場合、2つのコンストラクタを用意し、インスタンス化を実施する際の引数によって初期値の設定方法を変更しています。

    今回は色のみ指定した場合には19~22行目の処理が呼び出され、車種は自動的に「セダン」になるように実装されています。

    ポテパンダの一言メモ

    15~17行目に記述された変数がフィールド変数と呼ばれるもので、インスタンスそれぞれの値を保持します。

    メソッドの呼び出し

    7行目と9行目では、作成したインスタンスからクラスに定義されたメソッドを呼び出しています。

    メソッドの内容は29~31行目と33~35行目に記述されている内容で、フィールド変数の値を変更しCarオブジェクトが走行中か停止中かの状態を変更しています。

    フィールド変数にアクセス

    8行目と10行目では、インスタンスの状態をコンソール出力する処理を記述しています。

    ここで注目してもらいたいのが、インスタンス毎に出力されている値が異なる点です。

    同じクラスから作成されたインスタンスですが、インスタンス自体は全く別物であるため、保持している値が異なることをご確認頂けます。

    ポテパンダの一言メモ

    フィールド変数はprivateで定義し、setter・getterと呼ばれるメソッドを用意しアクセスする方法が一般的です。
    今回はインスタンス化について解説しているため、簡易的に直接フィールド変数にアクセスする方法を採用しています。

    さいごに: Java開発においてインスタンス化の知識は必須


    本記事では、Java開発における必須知識の1つ「インスタンス化」についてご紹介してきました。

    Javaに限らずですが、オブジェクト指向のプログラミング言語を使用する上でクラスとインスタンスの関係を理解することは必須です。

    プログラム初心者の方には分かりにくい概念ではありますが、様々なサンプルコードに触れながら自分自身でも使いこなせるように学習を進めていきましょう。



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE