Swiftにおける**クラス(class)と構造体(struct)は、どちらもプロパティ(値を保持する変数や定数)とメソッド(機能を定義する関数)**を持つことができます。以下では、プロパティとメソッドの定義と動作、クラスと構造体の違いに関して詳しく説明します。
プロパティ(Properties)
プロパティは、インスタンスの状態を表すための変数や定数です。
種類
-
ストアドプロパティ(Stored Properties)
値を保存するプロパティ。 -
コンピューテッドプロパティ(Computed Properties)
実体のある値を保存せず、計算によって値を返すプロパティ。 -
プロパティオブザーバ(Property Observers)
値の変化を監視して何かの処理を実行する。
メソッド(Methods)
メソッドは、型に属する関数です。インスタンスを操作したり、計算処理を定義したりできます。
種類
-
インスタンスメソッド
インスタンスに対して呼び出すメソッド。 -
ミューテイティングメソッド(mutating)
構造体や列挙体のプロパティを変更するメソッドは、mutatingキーワードが必要です。 -
型メソッド(Type Methods)
クラスや構造体そのものに関連付けられたメソッド。staticまたはclassを使う。クラスの場合、
classを使うとオーバーライド可能です。
クラスと構造体における違い
| 項目 | 構造体(struct) |
クラス(class) |
|---|---|---|
| 参照タイプ | 値型(copy) | 参照型(reference) |
| 継承 | 不可 | 可能 |
mutating キーワード |
必要 | 不要 |
デイニシャライザ(deinit) |
定義不可 | 定義可能 |
| プロパティとメソッド | 定義可能 | 定義可能 |
まとめ
-
クラスと構造体の両方で、プロパティとメソッドを定義してインスタンスの状態と振る舞いを表現できます。
-
構造体では
mutatingキーワードを使ってプロパティを変更する必要がある点が特徴です。 -
クラスは継承やデイニシャライザなど、より多機能な面も持っていますが、構造体はシンプルで安全に使えるデータ構造に向いています。
生成日:2025/05/04