override 关键字的使用 以及 构造函数 以及 相应属性需要注意的点
废话少说 懂得人看代码
class OneClass {
/// 如果属性这样声明 那么必须在初始化方法里面给他赋值
var numberOfWheelsInt: Int
var maxPassengersInt: Int
func description() -> String {
return "\(numberOfWheelsInt) wheels; up to \(maxPassengersInt) passengers"
}
init() {
/// 不同类型的声明有不同的处理方式
numberOfWheelsInt = 0
maxPassengersInt = 1
}
}
class TwoClass: OneClass {
/// 这样声明的属性就不需要再初始化方法里面再对其赋值
var speedDouble: Double = 6.0
/// 初始化构造函数的时候 如果是继承的那么一定要加上override
override init() {
/// 一定要执行这一步 这一步是为了初始化父类的一些函数 属性等。
super.init()
/// 父视图处理之后 顺带改变了父类某些属性的值 而这一块可以放到子类的初始化方法中
numberOfWheelsInt = 4
}
/// 新增构造函数
init(_ wheelsInt:Int, _ PassengersInt:Int) {
/// 一样要初始化父类的一些东西
super.init()
numberOfWheelsInt = wheelsInt
maxPassengersInt = PassengersInt
}
/// 重写父类的方法 前面一定要加上 override
override func description() -> String {
let superString = super.description()
return ("重写之后的方法 " + superString)
}
}
以下为调用
let oneClass = OneClass()
let twoClass = TwoClass()
print("oneClass的属性值\(oneClass.numberOfWheelsInt) \(oneClass.maxPassengersInt)")
print("twoClass的属性值\(twoClass.numberOfWheelsInt) \(twoClass.maxPassengersInt) \(twoClass.speedDouble)")
let oneString = oneClass.description()
print(oneString)
let twoString = twoClass.description()
print(twoString)
let twoAnatherClass = TwoClass(10,100)
print("twoAnatherClass的属性值\(twoAnatherClass.numberOfWheelsInt) \(twoAnatherClass.maxPassengersInt) \(twoAnatherClass.speedDouble)")