【Swift】継承とエクステンションについて説明するよ

【Swift】継承とエクステンションについて説明するよ

どうもふっさんです。

今回はSwiftの継承とエクステンションについて書いていきたいと思います。

 

Swiftの継承とエクステンション

継承

継承とは、あるクラスを効率良く使うための機能です。

まずは例を見ていきましょう。

 

じゃあ例に田中さんと鈴木さんでクラスを作ってみましょうか。

田中さんと鈴木さんの特徴は以下です。

田中さん→男、年齢35歳、年収500万、日本語を話す

鈴木さん→女、年齢55歳、年収180万、よくわからない言語を話す

 

これでクラスを作ってみましょう。

田中できましたね。

 

じゃあ次に鈴木さん。

鈴木もできました。

 

そしてこの2つクラスを見比べると、同じプロパティに同じメソッドがあるのがわかりますね。

これはプログラミングでいう「冗長なコード」または「無駄なコード」と言われるものです。

このようなコードをは極力書かないようにしたいわけです。

 

そんな時に活躍するのが、この「継承」というもの。

 

まずはこの無駄なコードをクラスにまとめてやります。

田中と鈴木に共通するのは「人間である」ということなので、humanクラスを作ってみます。

 

そしてこのクラスから新しい田中クラスと鈴木クラスを作ります。

 

この時に「継承」を行います。

継承のやり方は以下のように書きます。

 

この継承によって、継承を行なったhumanクラスのプロパティとメソッドを受け継ぐことができます。

これをやることによって、田中クラスは以下のように書くことができます。

まずこの田中クラスはinitによって、初期化をしています。

その初期化の中にsuper.initというのがあると思いますが、これは継承を行なった親クラスhumanの初期化であるinitを、子クラスであるtanakaで行なっているという処理になります。

親クラスhumanの初期化によって、この3つのプロパティが初期化されます。

 

次にその下にある「override func」

これは親クラスにあるメソッドなどを書き換える場合に使います。

say()は親クラスのhumanでは何も書かれていませんでしたが、tanakaクラスでは日本語を喋るように改変しました。

 

以上でtanakaクラスの完成です。

 

次にsuzukiクラスも作ってみましょう。

特徴毎に代入しているものは変わっていますが、書き方的には同じですね。

このように「継承」を行うことによってクラスが階層的になり、コードをシンプルに記述することができます。

 

エクステンション

エクステンションとは、既存のクラスにメソッドなどを追加する機能です。

これも簡単な例を見ていきましょう。

 

例えば佐藤さんは日本語が話せるとします。

 

そして必死に勉強して、英語を話せるようになったとします。

この英語が話せるようになったことをこの「エクステンション」で追加してやります。

これで英語を話すという能力を追加することができました。

くそ簡単ですね。

 

このエクステンションは基本的にAppleから提供されているUIKitなどで本領を発揮します

なので、慣れてくれば[Swift]UIColorにextensionで自作の色を追加する方法で書いたようなこともできるようになります!

 

まとめ

継承もエクステンションも簡単なので、サクッと理解しちゃってくださいね!

ではでは以上ふっさんでした〜。

 

Swiftカテゴリの最新記事