[Java] オブジェクトとインスタンスの違い

オブジェクトとインスタンスの言葉の違いについて整理。

オブジェクトとインスタンスの違いの前に、まずはこの言葉ができた背景にあるオブジェクト指向をみていく。


オブジェクト指向とは

オブジェクト指向とは、プログラムの集合をもの(オブジェクト)として捉え、そのものの役割を決めていくこと。


もの(オブジェクト)として捉え、役割を決めるとは?

例えば、スキーヤーという「もの」を作ることで、「もの」として捉えられるようにしてみる。

class Skier{
    public String name;
    
    public void introduce(){
        System.out.println("私は" + name + "に行きたい");
     }   
}


このスキーヤーという「もの」には、nameという情報が入れられ、introduce()という動きができるように定めた。

クラスを作ることで、この「スキーヤー」の振る舞いを捉えることができるようになった。

今度は、この「もの」から、別々のインスタンスという「もの」を作り、それぞれに情報と動きを与えてみる。

public class Main{
    public static void main(String[] args){
        Skier skier1 = new Skier();
        skier1.name = "野沢温泉スキー場";
        skier1.introduce();
        
        Skier skier2 = new Skier();
        skier2.name = "ルスツスキー場";
        skier2.introduce();
    }
}

//実行結果
私は野沢温泉スキー場に行きたい
私はルスツスキー場に行きたい


これにより、skier1は、私は野沢温泉スキー場に行きたいと紹介できる「もの」として捉えられるようになった。

skier2 も「私はルスツスキー場に行きたい」と紹介できる「もの」として、捉えられるようになった。


つまりオブジェクトとインスタンスの違いは?

[Java] オブジェクトとインスタンスの違い


  • オブジェクトとは、インスタンスを含む、全ての「もの」(オブジェクト)

インスタンスやクラスなどのオブジェクトも含む総称がオブジェクト。

  • インスタンスはオブジェクトの一種である

インスタンスを作ることで、skier1, skier2というそれぞれの「もの」の性質、動きを捉えられるようになるから。

  • クラスもオブジェクトの一種である。

クラスを作ることで、Skierという「もの」の性質、動きを捉えられるようになるから。


全体像を把握する

下記にJavaやwebアプリケーションについての記事をまとめた。


[st-card myclass=”” id=3431 label=”” pc_height=”” name=”” bgcolor=”” color=”” fontawesome=”” readmore=”on”]


コンピューターについての全体像も把握しておくと、プログラミングのさらなる理解に役立つ。


[st-card myclass=”” id=4587 label=”” pc_height=”” name=”” bgcolor=”” color=”” fontawesome=”” readmore=”on”]