[Swift] overrideでスーパークラスのメソッドを上書きする
書式
class 子クラス名: 親クラス名 {
override func メソッド名() {
処理コード
}
}
class 子クラス名: 親クラス名 {
override func メソッド名() {
処理コード
}
}
class 子クラス名: 親クラス名 { override func メソッド名() { 処理コード } }
使用例
// 親クラスの定義
class ParentDemo {
let num = 30
// 親クラスのメソッド funA
func funA() {
print(" parent funA 111")
}
// 親クラスのメソッド funB
func funB() {
print("parent funB 222")
}
}
// 子クラスの定義
class ChildDemo: ParentDemo {
let num2 = 90
func funC() {
//子クラスのメソッド
print(" child funC 333")
}
override func funA() {
print("Override メソッド名で親クラスのメソッドを上書き 444")
}
}
//子クラスのインスタンスの生成
let cft = ChildDemo()
print("結果1")
cft.funA()
print("結果2")
cft.funB()
print("結果3")
cft.funC()
print("クラスのメンバー変数")
print(cft.num)
print(cft.num2)
// 親クラスの定義
class ParentDemo {
let num = 30
// 親クラスのメソッド funA
func funA() {
print(" parent funA 111")
}
// 親クラスのメソッド funB
func funB() {
print("parent funB 222")
}
}
// 子クラスの定義
class ChildDemo: ParentDemo {
let num2 = 90
func funC() {
//子クラスのメソッド
print(" child funC 333")
}
override func funA() {
print("Override メソッド名で親クラスのメソッドを上書き 444")
}
}
//子クラスのインスタンスの生成
let cft = ChildDemo()
print("結果1")
cft.funA()
print("結果2")
cft.funB()
print("結果3")
cft.funC()
print("クラスのメンバー変数")
print(cft.num)
print(cft.num2)
// 親クラスの定義 class ParentDemo { let num = 30 // 親クラスのメソッド funA func funA() { print(" parent funA 111") } // 親クラスのメソッド funB func funB() { print("parent funB 222") } } // 子クラスの定義 class ChildDemo: ParentDemo { let num2 = 90 func funC() { //子クラスのメソッド print(" child funC 333") } override func funA() { print("Override メソッド名で親クラスのメソッドを上書き 444") } } //子クラスのインスタンスの生成 let cft = ChildDemo() print("結果1") cft.funA() print("結果2") cft.funB() print("結果3") cft.funC() print("クラスのメンバー変数") print(cft.num) print(cft.num2)
実行結果
結果1
Override メソッド名で親クラスのメソッドを上書き 444
結果2
parent funB 222
結果3
child funC 333
クラスのメンバー変数
30
90
結果1
Override メソッド名で親クラスのメソッドを上書き 444
結果2
parent funB 222
結果3
child funC 333
クラスのメンバー変数
30
90
結果1 Override メソッド名で親クラスのメソッドを上書き 444 結果2 parent funB 222 結果3 child funC 333 クラスのメンバー変数 30 90