[Java] クラスとインスタンス

こんにちは。

クラスとインスタンスについて解説します。
インスタンスは「オブジェクト」とも言いますが、ここではインスタンスと表記します。

Javaやその他オブジェクト指向言語を学ぶ際に一つの壁となるのが、この「クラス」と「インスタンス」の違いを理解することだと思います。
とはいっても、それほど難しいことではありません。

ソースコードや例だけで理解しようとすると把握しづらいのですが、現実世界の事象などに置き換えてみると意外とわかりやすかったりします。

今回は、ゲームに置き換えて説明してみます。
その中でも「シミュレーションゲーム」がわかりやすいのではないでしょうか。

まず、プログラム言語の概念で言うと、クラスとインスタンスは以下となります。

●クラス
インスタンスの元となる設計図です。
クラスの構造の通りにインスタンスは動作します。

●インスタンス(=オブジェクト)
クラスの実体です。
インスタンスを生成することで、クラスを動作させることができます。
何個でも生成できます。

大戦略などのシミュレーションゲームに置き換えてみます。

大戦略では、戦車や飛行機などの兵器が存在します。
しかし、全ての兵器を最初から使用できるわけではありません。

新しい兵器を生産できるようになるためには設計図が必要です。(ゲーム内用語は別ですが言い換えています)

例えば新型戦車の設計図から、新型戦車を10台生産する。
この場合、「新型戦車の設計図」がクラス、「新型戦車」がインスタンスです。

クラスとオブジェクト1

●コード例
では、実際にソースコードを書いてみます。

ここでは、「Human」クラスからインスタンスを5個生成して名前を登録するサンプルです。
「Human」という設計図から、5人分のインスタンスを作成しています。

・Humanクラス

public class Human {

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

	/**
	 * コンストラクタ
	 */
	public Human(String name){
		this.name = name;
	}

	/**
	 * 名前表示するメソッド
	 */
	public void sayMyName(){
		System.out.println("私の名前は、" + name + "です。");
	}
}

・インスタンスを作成して実行

public class Main {

	public static void main(String[] args) {

		// Humanクラスからインスタンスを5人分作成。
		Human instance1 = new Human("takeshi");
		Human instance2 = new Human("kengo");
		Human instance3 = new Human("shinji");
		Human instance4 = new Human("kaito");
		Human instance5 = new Human("yasushi");

		// インスタンスを動作させる。(登録された名前を言うだけ)
		instance1.sayMyName();
		instance2.sayMyName();
		instance3.sayMyName();
		instance4.sayMyName();
		instance5.sayMyName();
	}

}

以上で解説は終了です。

スポンサードリンク

関連記事

no image

[Java][基本] ループ処理(for文)

Javaのループ処理の基本である、for文を解説します。 ●文法 for( [①初期化];

記事を読む

no image

[Java][Spring] DIする方式を細かく見てみる① @ScopeでのSingletonとPrototypeの指定

今回は@Scopeアノテーションを用いて、オブジェクトをDIする方式を選択してみます。 ●解説

記事を読む

no image

[Java][Servlet][JSP] ServletからJSPへの転送

こんにちは。 今回は、「Servletでリクエストを受けて、JSPで表示する。」方法を解説しま

記事を読む

no image

[java] 文字列の一部を切り取る方法(substring)

こんにちは。 今回は文字列の一部を切り取る方法について解説します。 具体的には、String

記事を読む

no image

[Java] テキストファイルの読み込み方法

こんにちは、今回はテキストファイルをJavaで読む方法を紹介します。 標準で提供されているクラ

記事を読む

no image

[Java][MySQL] JavaからMySQLを使う方法

MySQLは、フリーでありながら商用としても使用できるパワーを持つデータベース(RDB)です。

記事を読む

no image

[Java][Framework] Spring Bootを使って、Spring MVC速攻開発してみる!(DB接続あり)

STSインストール STSは、EclipseにSpring関連のいろいろな機能を詰め込んだオールイ

記事を読む

no image

[Java] 文字列の分割(split)

こんにちは。 今回は、文字列の分割について解説します。 昔はStringTokenize

記事を読む

no image

[Java] 日付の計算方法(DateFormat、Date、Calendar)

こんにちは、kei0310です。 Javaで日付を計算する方法について解説します。 まず

記事を読む

no image

[Java][Servlet] EclipseでのJavaServlet作成

こんにちは、今回はEclipseを使用してJavaServletを作成します。 Eclipse

記事を読む

スポンサードリンク

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

スポンサードリンク

no image
CentOSにdockerをインストールしてみた

前置き dockerをcentos7にインストールしてみました

no image
awkでのgsubを使った文字列置換(正規表現)

まえおき bashなどのシェルスクリプトで、lsした結果とかを

no image
bashで並列処理する方法(xargs)

並列処理とは 通常、意識せずにプログラムを書くと、大体の場合は

no image
AWS Redshiftの使用ストレージ容量をクエリで調べる方法

用途 AWS Redshfitのコンソールを見れば、使用中のス

no image
pythonでstorage transfer serviceを使ってみた。

準備 pythonのインストールとかする。 このあたり。

→もっと見る

  • 2025年4月
     123456
    78910111213
    14151617181920
    21222324252627
    282930  
  • 2025年4月
     123456
    78910111213
    14151617181920
    21222324252627
    282930  
PAGE TOP ↑