Swift基本講座

継承の利用

全333コースを10日間無料で

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
クラスを継承して新しいクラスを作成する方法を説明します。継承を使うことで、新しいプロパティや新しいメソッドを追加してクラスの機能を拡張することができます。
講師:
07:39

字幕

このレッスンでは クラスの継承について説明します オブジェクト志向言語である Swift では 効率的な開発を行う為に 既存のクラスを拡張して再利用する 継承という機能が非常に重要です では実際に Player クラスを拡張して 新しく機能を追加した GreatPlayer という クラスを追加してみましょう クラスの拡張方法はこのように 新しいクラスを class の キーワードの後ろに 書いてやり 更にその後ろに コロンを追加して 元になるクラスの名前を書きます ここでこの元になるクラスのことを スーパークラス そして元になったクラスから派生した クラスのことをサブクラスと呼びます サブクラスにはすべてのプロパティと メソッドがスーパークラスから継承されます この状態だとこの GreatPlayer というのは そのまま元のクラスの代わりに 使うことができますので 例えば新しいプレーヤを作成すると いった時に この player2 に対して元の この Player クラスと同じような使い方を GreatPlayer を使ってやると いう風に書いても 全くそのまま動作させることができます このクラスにはいくつかの方法で 機能を追加して 拡張するということができますが まずはメソッドを 追加してみたいと思います まず GreatPlayer には Life を 更に追加することができるという― メソッドを用意したいと思います ポイントを受け取ってそのポイントの分だけ Life を追加する― この addLife というメソッドを まず用意してみました このように新しい関数を 用意してやることによって GreatPayer の中ではこの addLife という 新しいメソッドを利用できるようになります 実際にこの addLife を使ってみましょう player2 に対して addLife を 呼び出しますよ という時に この point ですね 例えば 100 ポイント 追加するということを指定しますと このように プレーヤ のヒットポイントが 100 上がったことが分かると思います この addLife というのは GreatPlayer に 追加された機能ですので 元々のこの Player クラスの中には 追加されていません ですので これ下に持っていきますが― 元のこの Player クラスを使っているコードは そのままの機能しか持っていませんので この Player クラスに対して addLife という メソッドを呼び出したいと思っても これはそんな機能はありませんよと エラーが出てしまいます ですので GreatPlayer を使う時には この GreatPlayer として予め オブジェクトを作成しておく必要があります また 追加できるのはメソッドだけではなく プロパティも追加できますので 新しくこのプレーヤのレベルを表す― level というプロパティを 追加してみたいと思います このように level のプロパティを今 追加しましたが この追加したことによって エラーが発生してしまいます 何故かと言うと level というのは今 初期値を持っていませんので 何かしら初期化を しなければいけないということで initializer を用意して下さいねと いう風にエラーが出ています これを解決する為に initializer を 用意しなければいけないんですが 元になっている このinitializer が既に ここにあります 元になっている initializer は name と Life を貰って 初期化を行うという initializer でしたが 更にここでは name と Life の 初期化に加えて 更に level を貰う必要がありますので このように name と Life と level 3つの情報を渡してもらうという形で initializer を用意します ここで自分自身のレベル この GreatPlayer のレベルは 渡されたこの level という引数で 初期化してやりますが name と Life に関しては 親の方の この Player のクラスの プロパティですので 親の方の initializer を使って初期化を して貰う必要があります ですので自分のこのプロパティが持ってる 初期化が終わったら super.init と書いて 親が持っているこの初期化の機構に対して 名前は name ですよと そして Life は Life ですよと いう風に初期化のパラメータを 渡してやることによって GreatPlayer の初期化もできますし 親が持っている初期化もできると いう形になります GreatPlayer のインスタンスを作る所では これで name と Life に加えて level を渡す必要が出てきましたので level は4ですよという風に 渡してやることで これ 波カッコ の数からも分かりますが 元々のクラス Player の中には name と Life しかないのに加えて 新しく GreatPlayer で加わった プロパティとして level というプロパティが更に4と いう値で初期化されていると― いうのがここで見てとれます 尚 この level の初期化を行う時に 引数として貰うのではなくて 予めもう 例えば level は10だと いう風に固定してしまって 初期化を行うこともできます 但し その場合にはこの Int 型の name と Life を貰いますよという― initializer を用意してしまった時には 上の方の この initializer と バッティングしてしまうので やはりこのようにエラーが出ます このような場合は この init はこの 親の initializer を上書きしてるんだと― いうことを明示する為に override というキーワードをつけて initializer を用意するようにして下さい そうすることによって level = 10 そして super の init をこの name と それから Life で呼び出しますよと 書いてやることによって エラーがなくなります このバージョンのものを用意する時には GreatPlayer は3つの引数を渡しても 作成できるようになりますし また 2つの引数を渡しても 作成できるようになります これ Objective-C とか C++ から やってきた人は ちょっと注意していただきたいのは super.init を最初の方に持ってこようと これは Objective-C とかだと こういう順番で初期化をしたりするんですが このようにしてしまうと Swift ではエラーが出ます Swift では自分の持っているプロパティ― この GreatPlayer が持っている プロパティを 全て初期化した後でないと super クラスの initializer は呼べませんよと いう制約がありますので必ず 自分の持っている― 自分が追加したプロパティを初期化した後に super の int を呼ぶようにして下さい このレッスンでは クラスの継承について説明しました

Swift基本講座

このコースでは、iOSやOS X用のアプリをとても簡単に開発することができるプログラミング言語Swiftについて解説します。if文やfor文などの制御命令の使い方から変数や定数、配列や辞書の使い方まで基本的なSwiftプログラミングの知識をPlayground上で説明します。Swiftプログラミングの知識を効率的に学ぶのに、このコースをぜひお役立てください。

2時間59分 (35 ビデオ)
現在、カスタマーレビューはありません…
 
ソフトウェア・トピック
価格: 2,990
発売日:2015年09月23日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。