Contents
インスタンスとオブジェクト指向プログラミングの基本概念: クラスとインスタンスの違いとは?
オブジェクト指向プログラミングでは、クラスとインスタンスは重要な概念です。クラスはオブジェクトの設計図であり、オブジェクトの属性やメソッドを定義します。一方、インスタンスはクラスを実体化したもので、オブジェクトの実際の値を保持します。
簡単な例を挙げましょう。車を設計するとき、車のクラスを定義する必要があります。このクラスには、車の色やサイズ、走行距離などの属性と、車を止めたり加速したりするメソッドが含まれます。次に、この車のクラスを使って、実際にユーザーが使用する車のインスタンスを複数作成できます。これらのインスタンスは、それぞれ異なる色やサイズを持ち、異なる距離を走行しています。
つまり、クラスは特定のオブジェクトを設計するための設計図であり、インスタンスはその設計図に基づいて作成された実際のオブジェクトです。クラスはあくまでも設計図であり、実際の値を持っていません。それに対して、インスタンスは実際の値を持っており、クラスに定義された属性やメソッドにアクセスできます。
クラスとインスタンスの違いは何ですか?
クラスとインスタンスの違いは、設計図と実際のオブジェクトという違いにあります。クラスはオブジェクトの設計図であり、オブジェクトの属性やメソッドを定義します。一方、インスタンスはクラスを実体化したもので、オブジェクトの実際の値を保持します。
クラスは一度定義されると、それに基づくインスタンスを何度でも作成できます。つまり、同じクラスから作成された複数のインスタンスは、それぞれ異なる値を持つことができます。
クラスとインスタンスの関係を実際のコードで示してみましょう。
下記は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__
メソッドで車の属性を初期化するように定義されたコンストラクタと、stop
とdrive
という2つのメソッドがあります。
次に、このクラスを使ってcar1
という名前のインスタンスを作成し、属性に"red"
、"medium"
、10000
を与えます。同様に、car2
という名前のインスタンスを作成し、属性に"blue"
、"small"
、5000
を与えます。これらのインスタンスは、それぞれ異なる属性を持つことができます。
最後に、car1
とcar2
の属性やメソッドにアクセスする方法を示しています。print(car1.color)
とprint(car2.color)
がそれぞれ"red"
と"blue"
を出力し、car1.stop()
とcar2.drive()
がそれぞれ"Car stopped"
と"Car is driving"
を出力します。