Swift 继承:
- 面向对象编程语言的一个重要的功能就是继承,继承的主要描述就是类与类的关系,通过继承可以在不必重写类的情况下,使用原有类的功能和进行扩展
继承的实现
- 属性的继承
- 方法的继承
- 属性观察器的继承
- 下标脚本的继承(代码中没有写)
代码示例
class Person {
//存储属性
var name = "老王"
//类型属性
static var age = 18
//计算属性
var description : String {
return "我的姓名\(name),年龄:\(Person.age)"
}
//属性观察器
var height : Int = 180 {
willSet {
}
didSet {
Person.age = 20
print("-----\(Person.age)")
}
}
//方法
func run() {
print("正在跑")
}
static func play() {
print("玩篮球")
}
}
class Stu : Person {
}
//属性的继承
Stu.age
//方法的继承
Stu.play()
let stu1 = Stu()
//属性的继承
stu1.name
stu1.description
//属性观察器的继承
stu1.height = 160
//方法的继承
stu1.run()
重写的实现
- 属性的重写
- 方法的重写
- 属性观察器的重写
- 下标脚本的重写(代码中没有写)
代码示例
class Teacher {
//存储属性
var name = "老王"
//类型属性
class var age : Int {
return 18
}
//计算属性
var description : String {
return "我的姓名\(name),年龄:\(Person.age)"
}
//属性观察器
var height : Int = 180 {
willSet {
}
didSet {
Person.age = 20
print("-----\(Person.age)")
}
}
//方法
func run() {
print("正在跑")
}
class func play() {
print("玩篮球")
}
}
class tech : Teacher {
var tempName : String = ""
//重写存储属性
override var name: String {
get {
return self.tempName
}
set {
self.tempName = newValue
}
}
//重写计算属性
override var description : String {
return "我的姓名\(name)"
}
//重写类型属性
override class var age : Int {
return 23
}
//重写属性观察
override var height : Int {
willSet {
}
didSet {
Person.age = 20
print("-----\(Person.age)")
}
}
//重写实例方法
override func run() {
print("跑步")
}
//从写类型方法
override class func play() {
print("玩排球")
}
}
tech.play()
tech.age
let t1 = tech()
t1.run()
t1.height = 200
t1.name = "老王"
t1.description