[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][基本] mainメソッドの書き方

こんにちはkeiです。 Javaの基本として、意外と知らないmain関数について解説します。

記事を読む

no image

[Java][Spring] Spring3でDIしてみる!(アノテーション使用)

Spring3を使って、一番基本的な形のプログラムを作成してみます。 今回は、アノテーションを

記事を読む

no image

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

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

記事を読む

no image

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

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

記事を読む

no image

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

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

記事を読む

no image

[Java] Apache POIでExcel操作!

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

記事を読む

no image

[Java][Jersey] JerseyでRESTfulなJAX-RS Webサービス作成

こんにちは、keiです。 今回はRESTfulなWeb Serviceの作成を行っていきます。

記事を読む

no image

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

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

記事を読む

no image

[Java] CSVファイルの読み込み方法

こんにちは、kei0310です。 CSVファイルをJavaに取り込む方法を解説します。

記事を読む

no image

[Java][JSP] EclipseでのJSP作成

今回は、Eclipseを用いてJSPを作成してみます。 まず、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のインストールとかする。 このあたり。

→もっと見る

  • 2024年4月
    1234567
    891011121314
    15161718192021
    22232425262728
    2930  
  • 2024年4月
    1234567
    891011121314
    15161718192021
    22232425262728
    2930  
PAGE TOP ↑