プロパティとメソッド

Swiftにおける**クラス(class構造体(structは、どちらもプロパティ(値を保持する変数や定数)メソッド(機能を定義する関数)**を持つことができます。以下では、プロパティとメソッドの定義と動作、クラスと構造体の違いに関して詳しく説明します。


プロパティ(Properties)

プロパティは、インスタンスの状態を表すための変数や定数です。

種類

  1. ストアドプロパティ(Stored Properties)
    値を保存するプロパティ。

    swift
    struct Person { var name: String // ストアドプロパティ let age: Int // 不変のストアドプロパティ }
  2. コンピューテッドプロパティ(Computed Properties)
    実体のある値を保存せず、計算によって値を返すプロパティ。

    swift
    struct Rectangle { var width: Double var height: Double var area: Double { // コンピューテッドプロパティ return width * height } }
  3. プロパティオブザーバ(Property Observers)
    値の変化を監視して何かの処理を実行する。

    swift
    struct StepCounter { var steps: Int = 0 { willSet { print("新しい値: \(newValue)") } didSet { print("前の値: \(oldValue)") } } }

メソッド(Methods)

メソッドは、型に属する関数です。インスタンスを操作したり、計算処理を定義したりできます。

種類

  1. インスタンスメソッド
    インスタンスに対して呼び出すメソッド。

    swift
    struct Circle { var radius: Double func circumference() -> Double { return 2 * Double.pi * radius } }
  2. ミューテイティングメソッド(mutating)
    構造体や列挙体のプロパティを変更するメソッドは、mutatingキーワードが必要です。

    swift
    struct Counter { var count = 0 mutating func increment() { count += 1 } }
  3. 型メソッド(Type Methods)
    クラスや構造体そのものに関連付けられたメソッド。staticまたはclassを使う。

    swift
    struct MathUtil { static func square(_ x: Int) -> Int { return x * x } }

    クラスの場合、classを使うとオーバーライド可能です。

    swift
    class Shape { class func description() -> String { return "これは図形です" } }

クラスと構造体における違い

項目 構造体(struct クラス(class
参照タイプ 値型(copy) 参照型(reference)
継承 不可 可能
mutating キーワード 必要 不要
デイニシャライザ(deinit 定義不可 定義可能
プロパティとメソッド 定義可能 定義可能

まとめ

  • クラスと構造体の両方で、プロパティとメソッドを定義してインスタンスの状態と振る舞いを表現できます。

  • 構造体ではmutatingキーワードを使ってプロパティを変更する必要がある点が特徴です。

  • クラスは継承やデイニシャライザなど、より多機能な面も持っていますが、構造体はシンプルで安全に使えるデータ構造に向いています。

生成日:2025/05/04