派生クラスで親クラスのメソッドをオーバーライドします。
内容
メソッドをオーバーライドする際にはメソッドに"override"を付加します。また、派生元のクラスメソッドは"open"である必要があります。"open"がないと、”final and cannot be overridden”エラーが発生します。
コード
open class Person(val mName:String, val mAge:Int ) { var mType = "不明" open fun printType(){ // オーバーライド可能にするために"open"の付加が必要。 println(mType) } } class Adult : Person { constructor(mName:String,mAge:Int): super(mName,mAge) init{ mType = "大人" } override fun printType(){ // オーバーライドするには"override"の付加が必要 println(mType+" 年齢:"+mAge) } } fun main(args: Array<String>) { val p1 = Person("田中はじめ",45) p1.printType() val p2 = Adult("山本信二",50) p2.printType() }
結果
不明 大人 年齢:50