Help us understand the problem. What is going on with this article?

クラスとインスタンスの違い

More than 3 years have passed since last update.

この記事では、クラスの実装やインスタンスの作成でなく、それらのニュアンスを理解することを目指します。

クラスとは何か

設計図。またはある実体を生成するために定義された概念のようなもの。

インスタンスとは何か

クラスという設計図を基に作成した実体。車を例に挙げますと
車のクラス(設計書)からベンツというインスタンス(実体)を製造します。
インスタンスは、それぞれ違う特徴を持ちます。
黒い色の車を作成しても、その中には、トヨタの車もあるでしょうし、ベンツの車もあるでしょうし、大きさも形も違い、インスタンスは同じものは一つもありません。

コードを書いてイメージしよう

ここではjavaを使います。
車クラスという車の設計書を作成し、インスタンスを作成していきます。

1,クラスの設計

まず車クラスの設計書を作成しましょう。
設計書の具体的な作成方法は以下のページを参考にしてみてください。
(まだ作成中のため、お待ちください)

Car.java
class Car {
    // フィールドの宣言

    public String name = ""; //名前の初期値 ・・・1

    public String color = ""; //色の初期値 ・・・2

    public int speed = 0; //スピードの初期値 ・・・3

    // メソッドの宣言
    public void setCar(String n, Sring c) { // ・・・4
        this.name = n; //インスタンスの名前を設定 ・・・4-1
        this.color = c; //インスタンスの色を設定 ・・・4-2
    }

   public void setSpeed(int a) {// 5
        this.speed = a;//スピードの初期値 ・・・5-1
    }
}

javaを知らない方でも、なんとなく直感的にわかると思います。
車の設計書(クラス)を作成しました。定義した内容は以下の通り

  1. 車に名前という特徴があることを設定する
  2. 車に色という特徴があることを設定する
  3. 車にスピードという特徴があることを設定する
  4. 車に名前と色を設定できる仕様を追加する
    1. 車のインスタンスに名前を設定する
    2. 車のインスタンスに色を設定する
  5. 車にスピードを設定できる仕様を追加する
    1. 車のインスタンスにスピードを設定する

これはあくまで設計書なので、インスタンスを作成しない限り、
ただ設計書を作成しただけになります。

2,インスタンスの作成

今度は作成した設計書を基に車インスタンスを作成します。

  • 名前はベンツ
  • 色はホワイト
  • スピードは100

とします。

以下のように、Test.Javaクラス内に、
makeCarというメソッドを追加し、その中に書いていきます。
※CarクラスがTest.Javaクラス内で使える前提で話を進めます

Test.java
    public void makeCar() { 
       Car myCar = new Car(); // ・・・1
       myCar.setCar("ベンツ","ホワイト"); // ・・・2
       myCar.setSpeed(100); // ・・・3
    }
}

このmakeCar内で定義した内容は、

  1. 車のインスタンスを作成
  2. 作成したインスタンスに、ベンツという名前とホワイトという色を設定する
  3. 作成したインスタンスに、スピード100を設定する

最後に

Javaやobjective-cなどの言語で、オブジェクト指向で処理をする場合クラスインスタンスという言葉が繰り返し出てくると思います

わからない場合は、普段身の回りにあるもので、クラスやインスタンスを作成してみて、置き換えてみるとすんなりわかるかもしれません。

下記にインスタンスメソッドとクラスメソッドの違いを説明した記事を書いたので
そちらも合わせて参考にしていただけたらと思います。
(作成中)

何かご指摘などありましたら、言ってください!!

komo_ta
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした