クラス
データ(属性)と動作(メソッド)を指定してオブジェクトを作成するための、ユーザー定義の設計図またはテンプレート。
クラスは、オブジェクト指向プログラミング(OOP)における基本的な概念です。オブジェクト(インスタンス)を作成するための建築設計図として機能します。
クラスの構成要素:
- 属性(フィールド/プロパティ):オブジェクトが格納するデータ(例:name, age)。
- メソッド(関数):オブジェクトが実行できるアクション(例:bark(), calculateSalary())。
- コンストラクタ:新しいオブジェクトを初期化するための特別なメソッド。
クラスとオブジェクトの関係:Carがクラスである場合、myRedToyotaはそのクラスのオブジェクト(インスタンス)です。
graph LR
Center["クラス"]:::main
Pre_object_oriented_programming["object-oriented-programming"]:::pre --> Center
click Pre_object_oriented_programming "/terms/object-oriented-programming"
Rel_object["object"]:::related -.-> Center
click Rel_object "/terms/object"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧒 5歳でもわかるように説明
クラスは家の設計図のようなものです。部屋の数や窓の場所を教えてくれます。しかし、設計図の中に住むことはできません。設計図に基づいて実際の家(オブジェクト)を建てる必要があります。同じ設計図(クラス)から、たくさんの異なる家(オブジェクト)を建てることができます。
🤓 Expert Deep Dive
クラスはポリモーフィズム、継承、カプセル化を定義します。抽象クラスはインスタンス化できず、サブクラスの基盤として機能します。インターフェースは実装なしで契約を定義します。メタクラス(Python/Smalltalkなど)はクラスを作成するクラスです。静的メンバはインスタンスではなくクラス自体に属します。