国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Swift protocol協議

2019-11-08 00:15:07
字體:
來源:轉載
供稿:網友
在Swift里協議里可以定義屬性,方法
PRotocol Pet {        var name: String {get set}    var birthPlace: String {get}    func playWith()    func fed()        mutating func changeName(name: String)}struct Dog: Pet {        internal mutating func changeName(name: String) { // 結構體加上mutating        self.name = name    }        var name: String = "dog"    var birthPlace: String = "china"        func fed() {        print("fed me")    }    internal func playWith() {        print("play with me")    }}

協議里定義的方法和屬性要全部實現

var dog:Dog = Dog()dog.birthPlace = "beijing"var pet:Pet = Dog()pet.birthPlace = "beijing"再看上面的代碼,前兩行聲明一個Dog類型的實例,可以修改其birthPlace,后面兩行聲明的是一個Pet類型的實例,不能修改其birthPlace,因為在Pet協議里birthPlace是只讀的可以看出,雖然Dog類實現了Pet協議,但協議規定的只讀屬性發生了改變。

協議里聲明構造函數:

protocol Pet {        var name: String {get set}    var birthPlace: String {get}    func playWith()    func fed()    init(name: String)    mutating func changeName(name: String)}class Animal {    var legs: Int = 4    var name: String = "i am a animal"    init(name: String) {        self.name = name    }}class Bird: Animal, Pet {    override required init(name: String) { // override關鍵字 對應 父類animal, required 對應協議Pet        super.init(name: name)    }    internal func changeName(name: String) {            }    internal func fed() {            }    internal func playWith() {            }    internal var birthPlace: String = ""}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盐城市| 兴文县| 成安县| 乌苏市| 山阳县| 古丈县| 依兰县| 宜兰县| 额济纳旗| 开化县| 那曲县| 南充市| 卓尼县| 寿宁县| 河北区| 阿城市| 上思县| 本溪| 海南省| 原阳县| 泗洪县| 寿宁县| 南涧| 紫金县| 安岳县| 滦南县| 彭山县| 崇州市| 雅安市| 浦县| 昂仁县| 无锡市| 和平区| 永丰县| 鄂伦春自治旗| 三穗县| 自治县| 静安区| 英山县| 综艺| 楚雄市|