支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • Javaのインスタンスって何者?

【Java】インスタンスとは何者なのか?

はじめに

Javaはプログラミング言語において『オブジェクト指向』言語の1つです。初めてプログラミングを学習されている方はインスタンスについて一度は躓いたことがあるのではないでしょうか。実際に私もかつて一度挫折した経験があります。この『オブジェクト指向』『インスタンス』はJava以外の言語にも共通するのでぜひ覚えて、他言語でも応用していただきたいです。

オブジェクト指向とは?

JavaやC言語のプログラミングは、『オブジェクト指向』プログラミングと言われています。この『オブジェクト指向』というのは、クラスを用いてクラスの中に必要なメンバを宣言し、それをインスタンス化してオブジェクトにします。
この説明だと少し分かりにくいので後程詳しく説明しますが、イメージとしては、クラスが「車の設計図」だとします。この設計図の中に必要な処理(メンバ)を書き、この設計図を基に車を作ります。
この「設計図から車を作る」ことを『インスタンス化』と呼びます。また、「設計図からできた車」が『オブジェクト(インスタンス)』に当たります。
Javaの参考書等を見ると『インスタンス』のことを『オブジェクト』と記載していることがほとんどです。なぜ『インスタンス』ではなく、『オブジェクト』が一般的に記載されているかということに関しては、あくまでも私の意見ですが、英語で考えると分かりやすいでしょう。英単語の意味としての『インスタンス』は、「実態」「事実」という意味であるのに対し、『オブジェクト』は「もの」「物体」といった意味があります。「プログラミング言語」を「形に変えて」、「もの」として考えることが「オブジェクト指向」になります。その為、「実物化して実態にする」より「実物化してものにする」として考えた方が頭に入りやすいですよね。
以上の理由から、参考書には『オブジェクト』と記載しているのではないでしょうか。
インスタンスとオブジェクトは大体同じ意味なのであまり深く考えず、オブジェクト=インスタンスくらいの感覚で覚えておきましょう。
上記のように、クラスやオブジェクトを基にしたプログラムの開発手法のことを『オブジェクト指向』と呼んでいます。

インスタンスとは?

インスタンスとは、クラスを基に作成したオブジェクトのことを『インスタンス』と言います。
インスタンスは、オブジェクト指向のプログラミング言語にとってとても重要な要素で、インスタンスを生成することによってプログラムの骨組みを作っていると言っても過言ではありません。

以下、インスタンスの宣言方法です。

1.class Car { //Carクラスの宣言
2.    int air = 10; //変数airに10を代入
3.    int gus; //変数gusを宣言
4.}
5.
6.Car car = new Car(); //Car型の変数carを宣言し、new演算子を使ってCarクラスのインスタンスを生成
7.
上記のプログラムより、1行目~3行目でCarクラスを宣言しております。この宣言したCarクラスを6行目でインスタンス化し、インスタンス(オブジェクト)を生成します。このインスタンス生成時にインスタンス化をしますが、この時にインスタンス化のルールがあります。それは、new演算子を使用することです。

初めに、クラス型変数を宣言します。「クラス名 変数名」のように宣言します。
この変数に「new クラス名();」を代入して、インスタンス化を行います。
このオブジェクトを作成することで、そのオブジェクトを呼び出して変数やメソッドを呼び出すことができます。
以下、オブジェクトを使って変数、メソッドを呼び出したプログラムです。
 1.class Car {
 2.    public int air = 10;//変数airに10を代入
 3.    public int gus //変数gusを宣言
 4.    public void engine(){ //メソッドengineを宣言
 5.        System.out.println("車はガソリンで動きます。");//メソッドの処理
 6.    }
 7.}
 8.class Main { //Mainクラスを宣言
 9.    public static void main(String[] args){ //mainメソッドを宣言
10.        Car car = new Car();//インスタンス化でインスタンス生成
11.        car.gus = 5;//変数
12.        car.engine();
13.        System.out.println(car.air);//変数airを出力
14    .    System.out.println(car.gus);//変数gusを出力
15.    }
16.}

実行結果:
車はガソリンで動きます。
10
5

上記のプログラムでは、8行目にMainクラスを宣言し、9行目にJavaを実行させるのに必要なpublic static void main(String[] args)のmainメソッド宣言しております。このmainメソッド内でCarクラスをインスタンス化し、インスタンスcarから変数やメソッドにアクセスしています。アクセスする際は上記のプログラムの場合、「car.変数(メソッド)」のように「インスタンス名.変数名(メソッド名)」のように.(ドット)で結んでインスタンス化したクラスの変数やメソッドにアクセスしております。

まとめ

今回はJavaプログラミングで使用するインスタンスについて上記で説明いたしました。インスタンス(オブジェクト)はオブジェクト指向のプログラミングには必要な要素なので、Javaを学習する上ではとても大切になってきます。インスタンスについてもし忘れてしまった場合には、もう一度この記事を見直して覚えなおしてほしいです。最後までお読みいただきありがとうございます。