/**
重写属性。同时又会有一些限制:
【1】属性中如果有setter方法,则必须同时提供getter方法
【2】不可以将父类中的读写属性重写成只读属性,但是可以讲父类的只读属性重写成读写属性。
*/
class BankAccount {
//余额
var accountBalance:UInt64 = 0;
}
class SmallBank: BankAccount {
override var accountBalance:UInt64{
get{
let sum:UInt64 = 0;
return sum;
}
set{
print("do nothing");
}
}
/**
重写属性观察器。在子类中为父类的某个属性设置属性观察器,由于是在子类中定义,因此严格上说这属于继承之后对属性的重写。必然的,只读属性是不能重写属性观察器的。
*/
class bigBank: BankAccount {
override var accountBalance:UInt64{
willSet{
print("余额要变");
}
didSet{
if accountBalance >= 500000{
print("成为银行VIP");
}else{
print("不是银行VIP");
}
}
}
}
/**
super关键字
如何在子类重写的方法中或者属性中调用父类相同的方法或者属性呢?只需要在方法或者属性前加上super. 就可以调用父类的方法或者属性了。
*/
/**
final关键字
作用是阻止父类中的某个属性或者方法被子类重写。只要在属性或者方法前面加上final关键字就可以了。
如果说这个类的所有属性和方法都不想被重写,那么意思就是不想让这个类具有子类,只需要在类声明的时候前面加final就可以了。
*/
class test {
final var testName = "测试1";
}
final class notWrite{
var name = "不允许有子类";
}