【iPhoneアプリ開発入門】Swiftのクラスとエクステンション

【iPhoneアプリ開発入門】Swiftのクラスとエクステンション

  • このエントリーをはてなブックマークに追加

はい、皆さんは興味がないであろう自己紹介は抜きにして、早速クラスとエクステンションについての説明に入りたいと思います。

クラス

Swiftはオブジェクト指向言語です。クラスを定義し、そのクラスからインスタンスを生成して利用する感じになります。

クラス定義

クラスは、classキーワードの後にクラス名を書いて定義できます。

// ペンギンクラスを定義する
class Penguin {
}

インスタンス

定義したクラスを利用するには、クラスのインスタンスを生成する必要があります。

class Penguin {
}
// ペンギンクラスのインスタンスを生成する
var penguin = Penguin(); 

プロパティ

クラスに関連づけられた変数をプロパティと呼びます。

class Penguin {
    // 名前(プロパティ)を定義する
    var name:String = "名無し"; 
}
var penguin = Penguin();

メソッド

クラスに関連づけられた関数をメソッドと呼びます。

class Penguin {
    var name:String = "名無し";

    // 鳴き声を出す(メソッド)を定義する
    func cry() {
        print("ペンペン!");
    }
}
var penguin = Penguin();
// 実際に鳴き声を出す(メソッドを呼び出す)
penguin.cry();

イニシャライザ

インスタンスを生成する際に呼び出されるメソッドをイニシャライザといいます。

class Penguin {
    var name:String;

    // 名前を引数にとるイニシャライザを定義する
    init(name:String) {
        self.name = name;
    }

    func cry() {
        print("ペンペン!");
    }
}
// このペンギンのインスタンスをペン太と名付ける
var penguin = Penguin(name:"ペン太");
penguin.cry();

継承

既に定義してあるクラスを元にして、新しいクラスを定義することを継承といいます。
この時、元にするクラスをスーパークラス、新しく定義するクラスをサブクラスと呼びます。

サブクラス定義

新しく定義するクラス名の後に:をつけて、元にするクラス名を指定することで継承することができます。

// (ペンギンクラスを継承して)肯定ペンギンクラスを定義する
class PositivePenguin : Penguin {
}
var penguin = PositivePenguin(name:"肯定ペン太");
penguin.cry(); // "ペンペン!"

オーバーライド

オーバーライドを使うことで、継承元のメソッドを上書きすることができます。

class PositivePenguin : Penguin {
    // 鳴き声を上書き(変更)する
    override func cry() {
        print("せやな。");
    }
}
var penguin = PositivePenguin(name:"肯定ペン太");
penguin.cry(); // "せやな。"

エクステンション

既に定義してあるクラスの機能を拡張する仕組みがエクステンションです。
Objective-Cのカテゴリに似ています。

エクステンション定義

// ペンギンクラスを拡張する
extension Penguin {
    // 空を飛ぶ(メソッド)を追加する
    func fly() {
        print(self.name + "は大空へ飛び立った!");
    }
}

これでペン太は空を飛ぶことが出来るようになりました。

var penguin = Penguin(name:"ペン太");
penguin.fly(); // "ペン太は大空へ飛び立った!"

おわりに

かなり駆け足で説明しましたが、Swiftのクラス周りの文法は比較的シンプルです。
さくっと覚えて、がりがりコード書いて、更なるスキルアップを目指しましょう!
皆さんがいつかペン太と共に大空へ飛び立ってゆくことをお祈り申し上げます。

  • このエントリーをはてなブックマークに追加

記事作成者の紹介

Q(フロントエンドエンジニア)

フロントエンドでいろいろやっているQと申します。 ニックネームのQはエヴァQではない方のQです。

関連するSONICMOOVのサービス

フロントエンドエンジニア募集中!

×

SNSでも情報配信中!ぜひご登録ください。

×

SNSでも
情報配信中!
SONICMOOV Facebookページ SONICMOOV Twitter
フロントエンドエンジニア募集中!

新着の記事

mautic is open source marketing automation