Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

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

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

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


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

クラスとは

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

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

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

インスタンスとは

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

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

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

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

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

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

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

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


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

new演算子を利用

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

クラス名 インスタンス名 = new クラス名();

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

Car redCar = new Car();

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

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

public class Car {
  String name; // フィールド変数
  int maxSpeed; // フィールド変数

  public void run() {
    // 処理内容
  }
}

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

Car sampleCar = new Car();
sampleCar.maxSpeed = "160";
sampleCar.run();
ポテパンダの一言メモ

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

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


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

サンプルコード

public class Main {

	public static void main(String[] args) {
		Car car1 = new Car("赤");
		Car car2 = new Car("青", "ワゴン");

		car1.run();
		System.out.println("car1は" + car1.color + "色で" + car1.type + "タイプです。 現在" + car1.check());
		car2.stop();
		System.out.println("car2は" + car2.color + "色で" + car2.type + "タイプです。 現在" + car2.check());
	}
}

class Car {
	String color;
	String type;
	Boolean state;

	public Car(String argColor) {
		this.color = argColor;
		this.type = "セダン";
	}

	public Car(String argColor, String argType) {
		this.color = argColor;
		this.type = argType;
	}

	public void run() {
		this.state = true;
	}

	public void stop() {
		this.state = false;
	}

	public String check( ) {
		if(this.state) {
			return "走行中です。";
		} else {
			return "停止中です。";
		}
	}
}

実行結果が下記です。

car1は赤色でセダンタイプです。 現在走行中です。
car2は青色でワゴンタイプです。 現在停止中です。

サンプル解説

サンプルコードでは、「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に限らずですが、オブジェクト指向のプログラミング言語を使用する上でクラスとインスタンスの関係を理解することは必須です。

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

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。