インスタンスとオブジェクト指向プログラミングの基本概念: クラスとインスタンスの違い

インスタンスとオブジェクト指向プログラミングの基本概念: クラスとインスタンスの違いとは?

オブジェクト指向プログラミングでは、クラスとインスタンスは重要な概念です。クラスはオブジェクトの設計図であり、オブジェクトの属性やメソッドを定義します。一方、インスタンスはクラスを実体化したもので、オブジェクトの実際の値を保持します。

簡単な例を挙げましょう。車を設計するとき、車のクラスを定義する必要があります。このクラスには、車の色やサイズ、走行距離などの属性と、車を止めたり加速したりするメソッドが含まれます。次に、この車のクラスを使って、実際にユーザーが使用する車のインスタンスを複数作成できます。これらのインスタンスは、それぞれ異なる色やサイズを持ち、異なる距離を走行しています。

つまり、クラスは特定のオブジェクトを設計するための設計図であり、インスタンスはその設計図に基づいて作成された実際のオブジェクトです。クラスはあくまでも設計図であり、実際の値を持っていません。それに対して、インスタンスは実際の値を持っており、クラスに定義された属性やメソッドにアクセスできます。

クラスとインスタンスの違いは何ですか?

クラスとインスタンスの違いは、設計図と実際のオブジェクトという違いにあります。クラスはオブジェクトの設計図であり、オブジェクトの属性やメソッドを定義します。一方、インスタンスはクラスを実体化したもので、オブジェクトの実際の値を保持します。

クラスは一度定義されると、それに基づくインスタンスを何度でも作成できます。つまり、同じクラスから作成された複数のインスタンスは、それぞれ異なる値を持つことができます。

クラスとインスタンスの関係を実際のコードで示してみましょう。

下記はPython言語でのクラスとそのインスタンスを作成する例です。

class Car:
    def __init__(self, color, size, mileage):
        self.color = color
        self.size = size
        self.mileage = mileage
    
    def stop(self):
        print("Car stopped")
    
    def drive(self):
        print("Car is driving")

car1 = Car("red", "medium", 10000)
car2 = Car("blue", "small", 5000)

print(car1.color) # 出力結果:red
print(car2.color) # 出力結果:blue

car1.stop() # 出力結果:Car stopped
car2.drive() # 出力結果:Car is driving

この例では、Carというクラスを定義しています。このクラスには、__init__メソッドで車の属性を初期化するように定義されたコンストラクタと、stopdriveという2つのメソッドがあります。

次に、このクラスを使ってcar1という名前のインスタンスを作成し、属性に"red""medium"10000を与えます。同様に、car2という名前のインスタンスを作成し、属性に"blue""small"5000を与えます。これらのインスタンスは、それぞれ異なる属性を持つことができます。

最後に、car1car2の属性やメソッドにアクセスする方法を示しています。print(car1.color)print(car2.color)がそれぞれ"red""blue"を出力し、car1.stop()car2.drive()がそれぞれ"Car stopped""Car is driving"を出力します。

参考記事

  1. 参考サイト

合わせて読みたい

【Google Chrome】右クリックで翻訳がでなくなった時の対策方法の決定版