Swift 重载函数和重写函数以及final的使用

当子类B继承自父类A时,子类不但继承父类的属性,还继承了父类的方法。可以再子类中重载和重写父类的方法。

重载:
1、不需要加override,
2、函数名和父类相同,参数可以不同,
3、可以为子类在创建时添加额外的属性,属性可以通过外部传入
4、OC 不支持函数重载,OC 的替代方式是 withXXX…

重写(覆盖):
1、需要标识override
2、方法名和参数都必须跟父类相同
3、新加的属性只能在子类内部设置

PS:final关键字可以在class、func和var前修饰,被修饰的内容不会被继承或者重新操作。可防止被重载和重写。final用法参考

重载和重写示例代码如下:

class Person: NSObject {

 var name: String // 姓名
 var age: Int  // 年龄

 // 构造函数
 init(name: String,age: Int) {
  self.name = name
  self.age = age
  super.init()
 }
}

通过重载方法为其添加属性

class Student: Person {

 var lesson: String

 /// 重载
 init(name: String, age: Int, lesson:String) {
  self.lesson = lesson
  super.init(name: name, age: age)
 }

}
 /// 重载实例化的对象
 let s1 = Student(name: "jim", age: 21, lesson: "英语")
 print(s1.lesson)

通过重写方法为其添加属性

class Student: Person {

 var lesson: String

 /// 重写
 override init(name: String, age: Int) {
  lesson = "数学"
  super.init(name: name, age: age)

 }
}

 let s = Student(name: "Joyce", age: 18)
 print(s.lesson)

猜你喜欢

转载自blog.csdn.net/yingbi2014/article/details/80338398