美文网首页程序员
swift学习-指定和便利构造-12/29

swift学习-指定和便利构造-12/29

作者: littlersmall | 来源:发表于2016-01-04 13:58 被阅读68次

今天只有中午看了一会。看到150多页了,基本理解了swift的构造过程。
下午给xcode装了个vim的插件,xvim,似乎还挺不错的。

便利构造器。便利构造器语法:
convenience init() {….
指定构造器和便利构造器实战:
子类不会默认继承父类的构造器。但是如果条件可以满足,父类构造器可以被自动继承。
如果子类提供了所有父类指定构造器的实现,不管是继承来的还是通过自定义实现的,它将自动继承所有父类的便利构造器。
注意:子类可以通过部分满足的方式,使用子类的便利构造器来实现父类的指定构造器。

class Food {
    var name: String

    init(name: String) {
        self.name = name
    }

    convenience init() {
        self.init(name: "[Unnamed]")
    }
}

let nameMead = Food(name: "Bacon")

class RecipeIngredient: Food {
    var quantity: Int

    init(name: String, quantity: Int) {
        self.quantity = quantity
        super.init(name: name)
    }

    override convenience init(name: String) {
        self.init(name: name, quantity: 1)
    }
}

var myFood = RecipeIngredient() //默认构造器被继承,因为子类已实现父类的全部指定构造器,默认构造器调用init(name: String) -> super.init()

print(myFood.quantity)
print(myFood.name)

class ShoppingListItem: RecipeIngredient {
    var purchased = false
    var description: String {
        return "\(quantity) * \(name.lowercaseString)"
    }
}

let shoppItem = ShoppingListItem()

print(shoppItem.description)

由于第三个类为它自己引入的所有属性都提供了默认值,并且没有定义构造器,它将自动继承所有父类中的指定构造器和便利构造器。
ShoppingListItem.init() -> (继承) RecipeIngredient.init() -> (继承) Food.init()(convenience)

Foo.init() -> (调用) self.init(name: String) 由于init(name: String)在RecipeIngredient中被重写,因此调用 RecipeIngredient.init(name: String) -> RecipeIngredient.init(name: String, quantity: Int) -> Foo.init(name: String)。

晚上看了一晚上的锤子手机发布,木有看书。
发布会木有啥子惊喜,乏善可陈。
还是祝福一下老罗吧。有梦想而且偏执的人,实在太少了。

相关文章

  • swift学习-指定和便利构造-12/29

    今天只有中午看了一会。看到150多页了,基本理解了swift的构造过程。下午给xcode装了个vim的插件,xvi...

  • Swift5 构造函数知识点总结

    Swift 为类提供了两种构造器,分别是指定构造器和便利构造器。 指定构造器必须总是向上代理(重写、重载) 便利构...

  • swift学习笔记

    1.swift类的构造器 swift构造器有三种:指定构造器和, 便利构造器, 默认构造器. 其中用'conve...

  • Swift类的构造过程

    Swift类的存储型属性必须在构造过程完成后有值,Swift为类提供了两种构造器——指定构造器、便利构造器 指定构...

  • Swift面向对象

    创建一个类 类的四种属性 类的构造 swift类构造过程 指定构造器 便利构造器 KVC构造器 实例方法和类方法 ...

  • Swift 构造器(Initialization)

    关于swift中的构造器规则还是比较复杂的,什么 指定构造器(designed initializer), 便利构...

  • iOS开发 - 「Swift 学习」Swift的构造过程(四)

    类的继承和构造过程 Swift 提供指定构造器、便利构造器两种类型的类构造器来确保所有类实例中存储型属性都能获得初...

  • 继承与构造方法

    1.指定构造方法和便利构造方法解析a. 一个程序必须有一个指定构造方法,可以有多个便利构造方法b. 便利构造方法必...

  • Swift 指定构造器 & 便利构造器

    To be continued...

  • 构造方法总结二

    构造器间的调用规则 指定构造器必须调用其直接父类的"指定构造器" 便利构造器必须调用同类中的其它构造器(指定或便利...

网友评论

    本文标题:swift学习-指定和便利构造-12/29

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