原创BLog,转载请注明出处
我的Swift教程链接
http://blog.csdn.net/column/details/swift-hwc.html
继承
两个概念:子类(subclass)和基类(base class)子类可以继承父类的属性、方法、下标脚本(subscript)
子类可以调用和重写父类的属性、方法、下标脚本
1、继承的语法
用一个冒号指定继承关系
class subclass:baseclass{
}
2、访问和重写
在子类中,调用super.属性 super.方法 super[]等来访问基类
用override关键字重写:可以重写属性,方法,属性观察期,下标脚本
如果基类不想被重写,使用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])