国产探花免费观看_亚洲丰满少妇自慰呻吟_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 = ""}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 墨竹工卡县| 尚义县| 安国市| 勐海县| 吉首市| 靖江市| 安顺市| 阿克| 白水县| 宜昌市| 香格里拉县| 定州市| 巴马| 玛曲县| 荥阳市| 永川市| 钦州市| 马龙县| 崇信县| 图木舒克市| 托克逊县| 镇巴县| 铜梁县| 包头市| 天津市| 临桂县| 白山市| 南华县| 泸西县| 霍林郭勒市| 喀喇| 南宁市| 静宁县| 腾冲县| 景德镇市| 凯里市| 高淳县| 武隆县| 永胜县| 湟中县| 阿图什市|