Swift一步步学习

Swift学习之继承

2020-03-31  本文已影响0人  coderhlt

1、值类型(枚举、结构体)不支持继承,只有类支持继承。

final class Animal {
    func speak(){}
    
    class func Run() {}
    
    static func Test(){}
}

2、子类可以重写父类的下标、方法、属性,重写必须添加上overide关键字

一、重写方法

class Animal {
    func speak(){}
    
    class func Run() {}
    
    static func Test(){}
}

class Dog: Animal {
    override func speak() {
        print("重写父类的实例方法")
    }
    override class func Run() {
         print("重写父类的类型方法")
    }
}
let d = Dog()
d.speak()

二、重写属性

2.1 实例属性

class Animal {
    var name = "test"
    
}

class Dog: Animal {
    override var name: String {
        set{
            super.name = newValue
        }
        
        get {
            return super.name
        }
    }
}
let d = Dog()
print(d.name)

2.2 计算属性

class Animal {
    var age:Int {
        set {
            
        }
        get {
            return 10
        }
    }
}

class Dog: Animal {
    override var age: Int{
        set{
            
        }
        get{
            return 20
        }
    }
}
let d = Dog()

2.3属性观察器

class Animal {
    var age:Int = 10
    var height:Float{
        get {13.4}
        set {}
    }
}

class Dog: Animal {
    override var age: Int{
        didSet {
            print(oldValue)
        }
        
        willSet {
            print(newValue)
        }
    }
    
    override var height: Float{
        didSet {
            print(self.height)
        }
    }
    
}
let d = Dog()
d.age = 11
d.height = 20
print(d.age)
上一篇 下一篇

猜你喜欢

热点阅读