美文网首页
swift override 关键字

swift override 关键字

作者: 大斑马小斑马 | 来源:发表于2020-11-24 13:53 被阅读0次

override 关键字的使用 以及 构造函数 以及 相应属性需要注意的点
废话少说 懂得人看代码

class OneClass {
    
    /// 如果属性这样声明 那么必须在初始化方法里面给他赋值
    var numberOfWheelsInt: Int
    var maxPassengersInt: Int

    func description() -> String {
        return "\(numberOfWheelsInt) wheels; up to \(maxPassengersInt) passengers"
    }

    init() {        
        /// 不同类型的声明有不同的处理方式
        numberOfWheelsInt = 0
        maxPassengersInt = 1
    }
}

class TwoClass: OneClass {
    /// 这样声明的属性就不需要再初始化方法里面再对其赋值
    var speedDouble: Double = 6.0
    /// 初始化构造函数的时候 如果是继承的那么一定要加上override
    override init() {
        /// 一定要执行这一步 这一步是为了初始化父类的一些函数 属性等。
        super.init()
         
        /// 父视图处理之后 顺带改变了父类某些属性的值 而这一块可以放到子类的初始化方法中
        numberOfWheelsInt = 4
    }
    
    /// 新增构造函数
    init(_ wheelsInt:Int, _ PassengersInt:Int) {
        /// 一样要初始化父类的一些东西
        super.init()
        
        numberOfWheelsInt = wheelsInt
        maxPassengersInt = PassengersInt
    }
    
    /// 重写父类的方法 前面一定要加上 override
    override func description() -> String {
        let superString =  super.description()
        
        return ("重写之后的方法 " + superString)
    }
}

以下为调用

        let oneClass = OneClass()
        let twoClass = TwoClass()
        
        print("oneClass的属性值\(oneClass.numberOfWheelsInt) \(oneClass.maxPassengersInt)")
        print("twoClass的属性值\(twoClass.numberOfWheelsInt) \(twoClass.maxPassengersInt) \(twoClass.speedDouble)")
        
        let oneString = oneClass.description()
        print(oneString)
        
        
        let twoString = twoClass.description()
        print(twoString)
        
        let twoAnatherClass = TwoClass(10,100)
        print("twoAnatherClass的属性值\(twoAnatherClass.numberOfWheelsInt) \(twoAnatherClass.maxPassengersInt) \(twoAnatherClass.speedDouble)")

相关文章

网友评论

      本文标题:swift override 关键字

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