class Person {
func method2() {
print("Person method2")
}
func method1() {
print("Person method1")
self.method2()
}
}
class SubPerson:Person {
func superM1() {
super.method1()
}
override func method1() {
print("SubPerson method1")
}
override func method2() {
print("SubPerson method2")
}
}
SubPerson().superM1()
//输出
Person method1
SubPerson method2
如果注释掉 subperson的method2输出
Person method1
Person method2
总结:super只是告诉编译器指向,并不更改调用对象的身份。实际对象还是子类对象优先调用子类对象的方法。
网友评论