back

クラスを更に極める (2/4)

■オーバーライドについて

継承を利用すると、スーパークラスにあるプロパティやメソッドがそのまま使えるようになります。例えばスーパークラスにある機能をサブクラスで変更したい、と思うこともあるでしょう。そんなときに用いられるのが「オーバーライド」です。

オーバーライドは、スーパークラスにある機能をサブクラスで上書きして変更することです。例えばスーパークラスに「A」というメソッドがあったとき、そのサブクラスから「A」を呼び出すと、スーパークラスにあるAメソッドがそのまま実行されます。継承していますからね。

では、サブクラスに、まったく同じ「A」というメソッドをおいたらどうなるでしょう? するとサブクラスで「A」を呼び出すと、サブクラスに追加したAメソッドが呼び出され、スーパークラスにあるAは、もう呼び出されなくなるのです。これがオーバーライドの考え方です。

オーバーライドするメソッドは、メソッドの冒頭に「override」という修飾子を付けます。またメソッド名・引数・返値はすべて同じでなければいけません。どれかが違っているだけで、それは「別のメソッド」と判断されオーバーライドにはなりません。

下にオーバーライドの例を挙げておきます。ここでは、printDataというメソッドをサブクラスでオーバーライドしています。



(by. SYODA-Tuyano.)

※リストが表示されない場合

AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。

class Friend {
    var name:String
    
    init(name:String) {
        self.name = name
    }
    
    func printData() {
        println("\(self.name)")
    }
}

class BestFriend : Friend {
    var age:Int
    
    init(name:String, age:Int) {
        self.age = age
        super.init(name:name)
    }
    
    override func printData() {
        println("\(self.name) (\(you.age))")
    }
}

var you = BestFriend(name: "Taro", age: 30)
you.printData()



   

記事のリストに戻る



PC Site G+ mail