原创BLog,转载请注明出处
我的Swift教程链接
http://blog.csdn.net/column/details/swift-hwc.html
继承
两个概念:子类(subclass)和基类(base class)如果基类不想被重写,使用final关键字
final var
final func
final class 可以防止这个类被继承
子类重写的几点注意事项:
(1)对于基类的读写属性,不能重写为只读属性,如果提供getter方法,则同时要提供setter方法
(2)不可以对继承来的只读属性或者常量属性添加属性观察器,因为这样的属性不会变化
(3)不要同时提供set方法和属性观察器,因为在set方法中已经知道属性的变化了
3、几个简单的例子
例子一、重写属性
class HwcBaseClass{ var baseVar:String = "hwc" } class HwcSubClass:HwcBaseClass{ var subVar:Int = 10 override var baseVar:String{ get{ return super.baseVar } set{ super.baseVar = newValue + "123" } } } var baseInstance = HwcBaseClass() var subInstance = HwcSubClass() println(baseInstance.baseVar) println(subInstance.baseVar) subInstance.baseVar = "hello" println(subInstance.baseVar)
例子二、重写方法
class HwcBaseClass{ func print(){ println("baseclass") } } class HwcSubClass:HwcBaseClass{ override func print(){ println("subclassclass") } } var baseInstance = HwcBaseClass() var subInstance = HwcSubClass() baseInstance.print() subInstance.print()
例子三、重写下标脚本
class HwcBaseClass{ var x = 0 var y = 0 override subscript(index:Int)->Any?{ switch index{ case 0: return x case 1: return y default: return nil } } } class HwcSubClass:HwcBaseClass{ subscript(index:Int)->Any?{ switch index{ case 0: return super.x + 1 case 1: return super.y + 1 default: return nil } } } var baseInstance = HwcBaseClass() var subInstance = HwcSubClass() println(baseInstance[0]) println(subInstance[0])