クラスの基本について (4/5)
作成:2014-08-16 10:45
更新:2014-08-16 10:50
更新:2014-08-16 10:50
■メソッドのオーバーライド
継承を利用すると、既にあるクラスに新たな機能を追加できることはわかりました。が、それだけではありません。既にあるクラスの機能を変更することもできるのです。
これには「オーバーライド」と呼ばれる機能を使います。オーバーライドは、スーパークラスにあるメソッドを上書きする技術です。これは、メソッドの定義を以下のように記述するだけです。
最初にoverrideをつけることで、スーパークラスにあるそのメソッドを、新たに定義したメソッドで上書きします。これにより、そのメソッドを呼び出した時の働きを変えることができるわけです。
オーバーライドを利用する場合は、メソッド名だけでなく、引数や返値も正確にスーパークラスにあるメソッドと同じものにしなければいけません。
下に実際の利用例をあげておきましょう。これは先ほどのサンプルをアレンジして、sayメソッドをオーバーライドする形に直したものです。sayメソッドを呼び出すと、Heloクラスにあるsayではなく、Helloでオーバーライドしたsayが呼び出されるようになっていることがわかります。
これには「オーバーライド」と呼ばれる機能を使います。オーバーライドは、スーパークラスにあるメソッドを上書きする技術です。これは、メソッドの定義を以下のように記述するだけです。
override func メソッド (){ …… }
最初にoverrideをつけることで、スーパークラスにあるそのメソッドを、新たに定義したメソッドで上書きします。これにより、そのメソッドを呼び出した時の働きを変えることができるわけです。
オーバーライドを利用する場合は、メソッド名だけでなく、引数や返値も正確にスーパークラスにあるメソッドと同じものにしなければいけません。
下に実際の利用例をあげておきましょう。これは先ほどのサンプルをアレンジして、sayメソッドをオーバーライドする形に直したものです。sayメソッドを呼び出すと、Heloクラスにあるsayではなく、Helloでオーバーライドしたsayが呼び出されるようになっていることがわかります。
(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"; override func say(){ println("Hi," + name + "-" + name2 + "!"); } } var obj:Hello = Hello(); obj.say(); obj.name = "Hanako"; obj.name2 = "TANAKA"; obj.say();
※関連コンテンツ