[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] Apache POIでExcel操作!

Apache POIをまずは使ってみようという方(自分も含め)のメモ 導入 Maven htt

記事を読む

no image

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

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

記事を読む

no image

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

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

記事を読む

no image

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

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

記事を読む

no image

[Java] Javaのインストール(プログラム開発・入門用)

Javaのコードを書きたい!! という目的のためのJavaのインストール方法と、コマンドラインでの

記事を読む

no image

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

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

記事を読む

no image

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

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

記事を読む

no image

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

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

記事を読む

no image

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

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

記事を読む

no image

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

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

記事を読む

スポンサードリンク

Message

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

スポンサードリンク

no image
[python] 日付の取り扱い(datetime) 現在日付、計算、文字列変換(format)

現在日付 日付の計算 [crayon-59c6ef5910c4

no image
[python] 文字列結合

pythonでの文字列結合 サンプル

no image
[python] 配列の扱い方

pythonでの配列の扱い方 python 配列の作成

no image
[python] ファイルの読み込み

pythonでのファイルの読み込み方法 基本サンプル

no image
[PHP] 文字列の置換(str_replace)

文字列中の特定文字列を置換する方法 str_replace サ

→もっと見る

  • 2017年9月
    « 8月    
     123
    45678910
    11121314151617
    18192021222324
    252627282930  
  • 2017年9月
    « 8月    
     123
    45678910
    11121314151617
    18192021222324
    252627282930  
PAGE TOP ↑