【iPhoneアプリ開発入門】Swiftのクラスとエクステンション
はい、皆さんは興味がないであろう自己紹介は抜きにして、早速クラスとエクステンションについての説明に入りたいと思います。
クラス
Swiftはオブジェクト指向言語です。クラスを定義し、そのクラスからインスタンスを生成して利用する感じになります。
クラス定義
クラスは、classキーワードの後にクラス名を書いて定義できます。
1 2 3 4 5 |
[sourcecode lang="javascript"] // ペンギンクラスを定義する class Penguin { } [/sourcecode] |
インスタンス
定義したクラスを利用するには、クラスのインスタンスを生成する必要があります。
1 2 3 4 5 6 |
[sourcecode lang="javascript"] class Penguin { } // ペンギンクラスのインスタンスを生成する var penguin = Penguin(); [/sourcecode] |
プロパティ
クラスに関連づけられた変数をプロパティと呼びます。
1 2 3 4 5 6 7 |
[sourcecode lang="javascript"] class Penguin { // 名前(プロパティ)を定義する var name:String = "名無し"; } var penguin = Penguin(); [/sourcecode] |
メソッド
クラスに関連づけられた関数をメソッドと呼びます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[sourcecode lang="javascript"] class Penguin { var name:String = "名無し"; // 鳴き声を出す(メソッド)を定義する func cry() { print("ペンペン!"); } } var penguin = Penguin(); // 実際に鳴き声を出す(メソッドを呼び出す) penguin.cry(); [/sourcecode] |
イニシャライザ
インスタンスを生成する際に呼び出されるメソッドをイニシャライザといいます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[sourcecode lang="javascript"] class Penguin { var name:String; // 名前を引数にとるイニシャライザを定義する init(name:String) { self.name = name; } func cry() { print("ペンペン!"); } } // このペンギンのインスタンスをペン太と名付ける var penguin = Penguin(name:"ペン太"); penguin.cry(); [/sourcecode] |
継承
既に定義してあるクラスを元にして、新しいクラスを定義することを継承といいます。
この時、元にするクラスをスーパークラス、新しく定義するクラスをサブクラスと呼びます。
サブクラス定義
新しく定義するクラス名の後に:をつけて、元にするクラス名を指定することで継承することができます。
1 2 3 4 5 6 7 |
[sourcecode lang="javascript"] // (ペンギンクラスを継承して)肯定ペンギンクラスを定義する class PositivePenguin : Penguin { } var penguin = PositivePenguin(name:"肯定ペン太"); penguin.cry(); // "ペンペン!" [/sourcecode] |
オーバーライド
オーバーライドを使うことで、継承元のメソッドを上書きすることができます。
1 2 3 4 5 6 7 8 9 10 |
[sourcecode lang="javascript"] class PositivePenguin : Penguin { // 鳴き声を上書き(変更)する override func cry() { print("せやな。"); } } var penguin = PositivePenguin(name:"肯定ペン太"); penguin.cry(); // "せやな。" [/sourcecode] |
エクステンション
既に定義してあるクラスの機能を拡張する仕組みがエクステンションです。
Objective-Cのカテゴリに似ています。
エクステンション定義
1 2 3 4 5 6 7 8 9 |
[sourcecode lang="javascript"] // ペンギンクラスを拡張する extension Penguin { // 空を飛ぶ(メソッド)を追加する func fly() { print(self.name + "は大空へ飛び立った!"); } } [/sourcecode] |
これでペン太は空を飛ぶことが出来るようになりました。
1 2 3 4 |
[sourcecode lang="javascript"] var penguin = Penguin(name:"ペン太"); penguin.fly(); // "ペン太は大空へ飛び立った!" [/sourcecode] |
おわりに
かなり駆け足で説明しましたが、Swiftのクラス周りの文法は比較的シンプルです。
さくっと覚えて、がりがりコード書いて、更なるスキルアップを目指しましょう!
皆さんがいつかペン太と共に大空へ飛び立ってゆくことをお祈り申し上げます。