【初心者必見】Javaのインスタンスとは?クラスとの違いもわかりやすく解説!!

Java

今回の記事ではJavaの理解に必須となるインスタンスについて解説していきます!
オブジェクト指向を理解する上で必須な上に、プログラミング初心者が躓きやすい場所でもあります。
しかし、このインスタンス及びクラスを理解できると一気にプログラミングが楽しくなります!(僕がそうでした)

この記事では

  • インスタンスとは
  • クラスとは
  • インスタンス化とは

という内容をサンプルコードを交えて現役エンジニアがわかりやすく解説していきます。
楽しくプログラミングをするためにぜひこの記事を読んで、インスタンスについて勉強してみてください。

インスタンスとは

インスタンスとはよく「実体」と表現されます。
かなりイメージしにくい言葉なので、わかりやすく例えると今この記事を読んでいるあなたの周りにあるものは全てインスタンスだと一度考えてみましょう。
今あなたの周りには何がありますか?

  • コップ
  • 目覚まし時計
  • ゴミ箱
  • エアコン

なんでも良いですが、あなたの周りにいろんなモノがあると思います。
それらは全てインスタンスです。

クラスとは

次にクラスについて解説します。
クラスはよく「設計図」と表現されますがここではちょっと表現を変えてみようと思います。

あなたが友人A君を別の友人B君に紹介する場面を想像してみましょう。
友人を紹介するときはどんな情報を伝えるでしょうか?

  • 名前
  • 身長は何センチ
  • 体重は何センチ
  • 好きな食べ物
  • 特技

おそらくこのような情報を伝えるはずです。
そしてどのような人でもこのような情報は持っています。
これをプログラムで表したものがクラスです。

実際にサンプルコードで確認してみましょう。
Personクラスを作成しました。

/**
 * 人を表すクラス
 * @author uhablog
 */
public class Person {

	/**
	 * 名前
	 */
	public String name;

	/**
	 * 身長
	 */
	public int height;

	/**
	 * 体重
	 */
	public int weight;

	/**
	 * 好きな食べ物
	 */
	public String favoriteFood;

	/**
	 * 特技
	 */
	public String specialSkill;

	/**
	 * 自己紹介
	 */
	public void selfIntroduction() {
		System.out.println("こんにちは、" + name + "です。");
		System.out.println("身長は" + height + "cm、体重は" + weight + "kgです。");
		System.out.println("好きな食べ物は" + favoriteFood + "で、特技は	" + specialSkill + "です。");
		System.out.println("よろしくお願いします。");

	}
}

上のサンプルのように人間を表すフィールドや自己紹介をするメソッドを作成しました。
このように現実世界にあるものを人に伝えるときの情報をまとめたプログラムがクラスです。

他にも本であれば

  • 本のサイズ
  • 本のタイトル
  • 値段
  • 得られる情報・知識

のようなものをまとめるとそれがクラスになります。

インスタンス化とはインスタンスを生成すること

これまでインスタンスとクラスについて解説してきました。
インスタンスは実体とよばれ、今あなたの身の回りにあるものは全てインスタンスです。
クラスは設計図と説明され、ものを他人に説明するときに伝える情報をまとめたものです。

続いてインスタンス化について解説していきます。
インスタンス化はクラスからインスタンスを生成することです。
先ほどのPersonクラスをもう一度見てみると、Personクラスには人の概念が書かれています。
これをもとに実際の人間を生み出すのが、インスタンス化です。

/**
 * 人を表すクラス
 * @author uhablog
 */
public class Person {

	/**
	 * 名前
	 */
	private String name;

	/**
	 * 身長
	 */
	private int height;

	/**
	 * 体重
	 */
	private int weight;

	/**
	 * 好きな食べ物
	 */
	private String favoriteFood;

	/**
	 * 特技
	 */
	private String specialSkill;

	/**
	 * 自己紹介
	 */
	public void selfIntroduction() {
		System.out.println("こんにちは、" + name + "です。");
		System.out.println("身長は" + height + "cm、体重は" + weight + "kgです。");
		System.out.println("好きな食べ物は" + favoriteFood + "で、特技は	" + specialSkill + "です。");
		System.out.println("よろしくお願いします。");

	}
}

では次にインスタンスを生成するサンプルを見てみましょう。
インスタンスを生成する際の基本的な書き方が次のようになります。

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

実際に先ほど作成したPersonクラスをインスタンス化して、インスタンスを生成します。
自己紹介してもらいましょう。

public class PersonMain {

	/**
	 * 実際にPersonクラスをインスタンス化して自己紹介してもらう
	 */
	public static void main(String[] args) {
		// Personクラスのインスタンス化
		// uhablogを創る
		Person uhablog = new Person();

		// uhablogの情報をインスタンスに持たせる
		uhablog.name = "uhablog";
		uhablog.height = 186;
		uhablog.weight = 78;
		uhablog.favoriteFood = "唐揚げ";
		uhablog.specialSkill = "フットサル";

		// uhablogが自己紹介する
		uhablog.selfIntroduction();
	}

}

実行結果

上記のプログラムを実行すると次のように自己紹介してくれます。

こんにちは、uhablogです。
身長は186cm、体重は78kgです。
好きな食べ物は唐揚げで、特技はフットサルです。
よろしくお願いします。

まとめ

今回はJavaのインスタンスやクラスについて解説してきました。
インスタンスは「実体」と呼ばれ、今あなたの身の回りにあるものは全てインスタンスです。
そしてクラスは「設計図」と呼ばれ、モノが共通して持っている情報をプログラムでまとめたものです。そしてクラスからインスタンスを生成することをインスタンス化といいます。

Javaのようなオブジェクト指向を学習する際に初心者の方が躓きやすいポイントがこのクラスとインスタンスの理解です。
しかしここが理解できると一気にプログラミングが楽しくなるので、いろんな書籍やWebサイトでインスタンスやクラスについて学習してみてください。

またクラスやインスタンスについて理解できると同じオブジェクト指向であるPythonやRuby、C#のような言語も理解が早くなります。
その点でも、難しいですが、学習効果の高いのが、クラスやインスタンスの勉強です。

タイトルとURLをコピーしました