クラスの基本について (3/5)
作成:2014-08-16 10:43
更新:2014-08-16 10:43
更新:2014-08-16 10:43
■クラスの継承について
クラスを使うと何が便利なのか。関係のある関数や変数をひとまとめにして扱えるということもありますが、それ以上に大きいのは「プログラムの再利用が簡単にできる」ということでしょう。クラスをコピーすれば、どこでも同じ機能が使えるようになるのですから。
この「クラスの再利用」ということを大きく推進するのが「継承」という機能です。継承は、既にあるクラスの機能を全て受け継いで新しいクラスを定義することです。つまり、既に便利そうなクラスがあったら、それを継承して、自分の独自の機能を付け足した新しいクラスを作ったり簡単にできる、というわけですね。
継承を使ったクラスの定義は、こんな具合に記述します。
継承するもとになるクラスを「スーパークラス」と言います。また、それを継承して作ったクラスのことを「サブクラス」といいます。サブクラスでは、スーパークラスにある機能が全て使えるようになります。
実際に継承を使ってみましょう。下のリストでは、Heloクラスを継承した「Hello」クラスを作成して使っています。Helloクラスのインスタンスでは、Helloに追加したname2プロパティやsay2メソッドが使えるだけでなく、スーパークラスのHeloにあるnameやsayも使うことができます。
Helloクラスに追加したsay2メソッドを見てみると、その中でスーパークラスにあるnameプロパティも使っていることに気が付きます。こんな具合に、スーパークラスにあるものはすべてそのクラスにあるものとみなして利用することができるのです。
この「クラスの再利用」ということを大きく推進するのが「継承」という機能です。継承は、既にあるクラスの機能を全て受け継いで新しいクラスを定義することです。つまり、既に便利そうなクラスがあったら、それを継承して、自分の独自の機能を付け足した新しいクラスを作ったり簡単にできる、というわけですね。
継承を使ったクラスの定義は、こんな具合に記述します。
class クラス名 : スーパークラス名 {
……クラスの内容……
}
継承するもとになるクラスを「スーパークラス」と言います。また、それを継承して作ったクラスのことを「サブクラス」といいます。サブクラスでは、スーパークラスにある機能が全て使えるようになります。
実際に継承を使ってみましょう。下のリストでは、Heloクラスを継承した「Hello」クラスを作成して使っています。Helloクラスのインスタンスでは、Helloに追加したname2プロパティやsay2メソッドが使えるだけでなく、スーパークラスのHeloにあるnameやsayも使うことができます。
Helloクラスに追加したsay2メソッドを見てみると、その中でスーパークラスにあるnameプロパティも使っていることに気が付きます。こんな具合に、スーパークラスにあるものはすべてそのクラスにあるものとみなして利用することができるのです。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
import Cocoa class Helo { var name:String = "Taro"; func say(){ println("Hello, " + name + "!"); } } class Hello:Helo { var name2:String = "YAMADA"; func say2(){ println("Hi," + name + "-" + name2 + "!"); } } var obj:Hello = Hello(); obj.say(); obj.name = "Hanako"; obj.name2 = "TANAKA"; obj.say2();
※関連コンテンツ