Swift学习之继承

作者: coderhlt | 来源:发表于2020-03-31 18:24 被阅读0次

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

final class Animal {
    func speak(){}
    
    class func Run() {}
    
    static func Test(){}
}
  • 类被关键字final修饰后,就不会被任何类继承

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()
  • 1、被class修饰的类型方法、下标,允许被子类重写
  • 2、被static修饰的类型方法、下标,不允许被子类重写

二、重写属性

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)
  • 1、子类不可以将父类属性重写为存储属性,即使父类的属性是存储属性。
  • 2、子类可以将父类的存储属性重写为计算属性,重写时,属性名、类型要一致。

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)
  • 可以在子类中为父类属性(除了只读计算属性、let属性),增加属性观察器

相关文章

  • Swift学习之继承

    1、值类型(枚举、结构体)不支持继承,只有类支持继承。 类被关键字final修饰后,就不会被任何类继承 2、子类可...

  • Swift 5.x - 初始化(中文文档)

    引言 继续学习Swift文档,从上一章节:继承,我们学习了Swift继承相关的内容,如继承的作用、重写父类的方法和...

  • swift 学习- 继承

    1.计算属性不占据内存,相当于是方法调用 2.子类可以将父类的属性(存属,计算)重写为计算属性(只能重写为计算属性...

  • Swift学习笔记九之继承

    1、继承:一个类可以继承另一个类的方法,属性及其它特征 2、子类还可以被其他类继承 3、重写:子类可以对继承自父类...

  • Swift学习笔记-继承

    1.方法的重写 需要在重写的方法前加 override。 在属性someProperty的 getter 或 se...

  • Swift学习(十:继承)

    1.定义一个基类 不继承于其它类的类被称为基类。 Vehicle是一个基类。基类定义了一个名为makeNoise的...

  • Swift学习(十三)继承

  • Swift学习之字符串连接,字典

    Swift学习之字典

  • OC Swift文件混编

    一.Swift 类可以继承 OC 类,OC 类不能继承 Swift 类。 二.Swift 和 OC 混编 三.两个...

  • oc 继承 swift 类

    oc 继承 swift 类 项目中使用 oc 继承 swift 类编译器报错: oc 继承前增加 objc_sub...

网友评论

    本文标题:Swift学习之继承

    本文链接:https://www.haomeiwen.com/subject/pchguhtx.html