クラスとインスタンス

オブジェクト指向プログラミング(OOP: Object-Oriented Programming)における基本概念の中で、「クラス」と「インスタンス」は非常に重要な役割を果たします。以下に、それぞれの概念について詳しく説明します。


1. クラス(Class)

クラスは、「オブジェクトの設計図」あるいは「ひな型」として機能する抽象的な構造です。現実世界の物体や概念をプログラム上で表現するためのテンプレートであり、**属性(プロパティ)振る舞い(メソッド)**を定義します。

クラスの構成要素

  • 属性(フィールド):オブジェクトのデータや状態を表す。例:名前、年齢、色など。

  • メソッド(関数):オブジェクトが行う処理や操作を定義する。例:話す、移動する、計算するなど。

例(擬似コード)

java
class Dog { String name; int age; void bark() { print("ワンワン!"); } }

この例では、Dogというクラスがあり、「名前」「年齢」という属性と、「bark(吠える)」というメソッドを持っています。


2. インスタンス(Instance)

インスタンスは、クラスをもとに実際に作られる**具体的なオブジェクト(実体)**です。クラスは抽象的な定義であるのに対し、インスタンスはプログラムの実行中にメモリ上に作られる個別の存在です。

インスタンスの生成

クラスからインスタンスを生成する操作を**インスタンス化(Instantiation)**と呼びます。

例(擬似コード)

java
Dog dog1 = new Dog(); dog1.name = "ポチ"; dog1.age = 3; dog1.bark();

このコードでは、Dogクラスからdog1というインスタンスを生成しています。dog1は個別の犬を表すオブジェクトであり、それぞれの属性に具体的な値(名前:ポチ、年齢:3)が設定されています。


3. クラスとインスタンスの関係

  • クラスは共通の性質や動作を定義する枠組み

  • インスタンスは、クラスという設計図から生み出された具体的なオブジェクト

この関係は、以下の比喩で理解できます:

  • クラス:車の設計図

  • インスタンス:実際に工場で作られた1台の車


4. なぜクラスとインスタンスを使うのか?

  • 再利用性:同じクラスを使って多数のオブジェクトを簡単に生成できる。

  • 可読性と構造化:データと操作をひとまとまりの単位(オブジェクト)として扱える。

  • 拡張性:クラスを継承して新しいクラスを作ることで機能を拡張できる(これが「継承」の概念につながります)。


まとめ

用語 説明
クラス オブジェクトの設計図。属性とメソッドを定義する構造。
インスタンス クラスから生成された実体。具体的なデータを持つ。

オブジェクト指向の中心的な考え方は、「現実世界のものごとをオブジェクトとしてとらえ、クラスを通じてその性質と振る舞いを抽象化する」ことです。そして、クラスとインスタンスの関係がそれを支える基礎となります。

生成日:2025/06/01