当子类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)