亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Swift > 正文

Swift學習筆記之構造器重載

2020-03-09 17:51:50
字體:
來源:轉載
供稿:網友
Swift 將為所有屬性已提供默認值的且自身沒有定義任何構造器的結構體或基類,提供一個默認的構造器。這個默認構造器將簡單的創建一個所有屬性值都設置為默認值的實例。
 

與函數一樣,方法也存在重載,其重載的方式與函數一致。那么作為構造器的特殊方法,是否也存在重載呢?答案是肯定的。

一、構造器重載概念

Swift中函數重載的條件也適用于構造器,條件如下:
函數有相同的名字;
參數列表不同或返回值類型不同,或外部參數名不同;
Swift中的構造器可以滿足以下兩個條件,代碼如下:

 

復制代碼代碼如下:

class Rectangle {
    var width : Double
    var height : Double
    init(width : Double, height : Double) {        ①
        self.width   = width
        self.height  = height
    }
    init(W width : Double,H height : Double) {        ②
        self.width   = width
        self.height  = height
    }
    init(length : Double) {        ③
        self.width   = length
        self.height  = length
    }
    init() {                                                ④
        self.width   = 640.0
        self.height  = 940.0
    }
}
var rectc1 = Rectangle(width : 320.0, height : 480.0)        ⑤
println("長方形:/(rectc1.width) x /(rectc1.height)")
var rectc2 = Rectangle(W : 320.0, H : 480.0)        ⑥
println("長方形:/(rectc2.width) x /(rectc2.height)")
var rectc3 = Rectangle(length: 500.0)        ⑦
println("長方形3:/(rectc3.width) x /(rectc3.height)")
var rectc4 = Rectangle()        ⑧
println("長方形4:/(rectc4.width) x /(rectc4.height)")

 

上述代碼第①~④行定義了4個構造器,其他是重載關系。從參數個數和參數類型上看,第①行和第②行的構造器是一樣的,但是它們的外部參數名不同,所以在第⑤行調用的是第①行的構造器,第⑥行調用的是第②行的構造器。
第③行和第④行的構造器參數個數與第①行不同,所以在第⑦行調用的是第③行的構造器,第④行調用的是第⑧行的構造器。

二、值類型構造器代理

為了減少多個構造器間的代碼重復,在定義構造器時,可以通過調用其他構造器來完成實例的部分構造過程,這個過程稱為構造器代理。構造器代理在值類型和引用類型中使用方式不同,本節我們先介紹值類型構造器代理。
將上一節的示例修改如下:

 

復制代碼代碼如下:

struct Rectangle {
    var width : Double
    var height : Double
    init(width : Double, height : Double) {        ①
        self.width   = width
        self.height  = height
    }
    init(W width : Double,H height : Double) {        ②
        self.width   = width
        self.height  = height
    }
    init(length : Double) {        ③
        self.init(W : length, H : length)
    }
    init() {                                                ④
        self.init(width: 640.0, height: 940.0)
    }
}
var rectc1 = Rectangle(width : 320.0, height : 480.0)        ⑤
println("長方形:/(rectc1.width) x /(rectc1.height)")
var rectc2 = Rectangle(W : 320.0, H : 480.0)        ⑥
println("長方形:/(rectc2.width) x /(rectc2.height)")
var rectc3 = Rectangle(length: 500.0)        ⑦
println("長方形3:/(rectc3.width) x /(rectc3.height)")
var rectc4 = Rectangle()        ⑧
println("長方形4:/(rectc4.width) x /(rectc4.height)")

 

將Rectangle聲明為結構體類型,其中也有4個構造器重載。在第③行和第④行的構造器中使用了self.init語句,self指示當前實例本身,init是本身的構造器,第③行的self.init(W : length, H : length)語句是在調用第②行定義的構造器,第④行的self.init(width: 640.0, height: 940.0)語句是在調用第①行定義的構造器。
這種在同一個類型中通過self.init語句進行調用就是我們說的構造器代理。

三、引用類型構造器橫向代理

引用類型構造器代理就是類構造器代理。由于類有繼承關系,類構造器代理比較復雜,分為橫向代理和向上代理。
        橫向代理類似于值類型構造器代理,發生在同一類內部,這種構造器稱為便利構造器(convenience initializers)。
        向上代理發生在繼承情況下,在子類構造過程中要先調用父類構造器,初始化父類的存儲屬性,這種構造器稱為指定構造器(designated initializers)。
由于我們還沒有介紹繼承,因此本章只介紹橫向代理。
將上一節的示例修改如下:

 

復制代碼代碼如下:

class Rectangle {
    var width : Double
    var height : Double
    init(width : Double, height : Double) {        ①
        self.width   = width
        self.height  = height
    }
    init(W width : Double,H height : Double) {        ②
        self.width   = width
        self.height  = height
    }
    convenience init(length : Double) {        ③
        self.init(W : length, H : length)
    }
    convenience init() {        ④
        self.init(width: 640.0, height: 940.0)
    }
}
var rectc1 = Rectangle(width : 320.0, height : 480.0)        ⑤
println("長方形:/(rectc1.width) x /(rectc1.height)")
var rectc2 = Rectangle(W : 320.0, H : 480.0)        ⑥
println("長方形:/(rectc2.width) x /(rectc2.height)")
var rectc3 = Rectangle(length: 500.0)        ⑦
println("長方形3:/(rectc3.width) x /(rectc3.height)")
var rectc4 = Rectangle()        ⑧
println("長方形4:/(rectc4.width) x /(rectc4.height)")

 

將Rectangle聲明為類,其中也有4個構造器重載。在第③行和第④行的構造器中使用了self.init語句,并且在構造器前面加上了convenience關鍵字,convenience表示便利構造器,這說明我們定義構造器是橫向代理調用其他構造器。
第③行的self.init(W : length, H : length)語句是在橫向調用第②行定義的構造器代理,第④行的self.init(width: 640.0, height: 940.0)語句是在橫向調用第①行定義的構造器代理。

構造器重載的問題今天就到這里吧,小伙伴們可以參考下示例,希望對大家有所幫助



注:相關教程知識閱讀請移步到swift教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美在线视频在线播放完整版免费观看| 久久精品99久久久久久久久| 538国产精品视频一区二区| yw.139尤物在线精品视频| 色综合老司机第九色激情| 亚洲一区二区国产| 精品久久久精品| 日韩电视剧在线观看免费网站| 日韩高清电影好看的电视剧电影| www.亚洲一区| 在线观看不卡av| 亚洲精品自产拍| 欧美性猛交xxxx黑人猛交| 国产大片精品免费永久看nba| 久久av中文字幕| 久久久欧美一区二区| 久久久亚洲欧洲日产国码aⅴ| 北条麻妃在线一区二区| 亚洲国产古装精品网站| 亚洲欧美综合区自拍另类| 日本aⅴ大伊香蕉精品视频| 日韩性生活视频| 日韩一区二区福利| 国产精品av网站| 日韩小视频网址| 青青草成人在线| 国产成人精品久久二区二区91| 欧美国产乱视频| 亚洲自拍偷拍第一页| 狠狠躁夜夜躁人人爽超碰91| 中文字幕精品www乱入免费视频| 欧美日韩免费一区| 日本亚洲欧美成人| 欧美激情一区二区三级高清视频| 国产精品一区二区三区久久久| 国产精品精品视频一区二区三区| 中文字幕亚洲一区| 91大神在线播放精品| 久久久噜久噜久久综合| 97香蕉超级碰碰久久免费的优势| 国产精品美女网站| 92国产精品视频| 欧美日在线观看| 国产精品1区2区在线观看| 欧美日韩在线视频首页| 91精品国产高清久久久久久久久| 一本色道久久88亚洲综合88| 国产精品视频成人| 欧美视频在线观看 亚洲欧| 亚洲色图18p| 免费97视频在线精品国自产拍| 欧美大片欧美激情性色a∨久久| 中文字幕精品www乱入免费视频| 欧美性生交xxxxxdddd| 7777kkkk成人观看| 欧美精品久久久久久久久久| 久久精品久久久久电影| 亚洲欧美资源在线| 欧美大片va欧美在线播放| 国产精品美女视频网站| 亚洲人成网站999久久久综合| 日韩美女在线播放| 亚洲国产精彩中文乱码av在线播放| 欧美性生活大片免费观看网址| 欧美人在线视频| 日韩av在线一区二区| 日韩最新免费不卡| 国产福利精品av综合导导航| 国产精品女主播视频| 欧美视频在线看| 欧美高清电影在线看| 色偷偷91综合久久噜噜| 欧美成人性生活| 欧美激情第一页xxx| 欧美色视频日本高清在线观看| 亚洲国产精品人久久电影| 国产精品久久999| 久久精品视频在线播放| 国产精品视频在线播放| 欧美日韩精品中文字幕| 欧美一区二区三区精品电影| 国产日韩欧美在线播放| 午夜精品久久久久久久男人的天堂| 最近2019中文字幕大全第二页| 日韩欧美综合在线视频| 亚洲无av在线中文字幕| 美女福利视频一区| 亚洲电影中文字幕| 亚洲大胆美女视频| 亚洲精品一区二区三区不| 亚洲精品成人久久久| 国产欧美精品一区二区三区-老狼| 亚洲精品美女免费| 日韩中文字幕国产| 欧美成人免费全部观看天天性色| 色在人av网站天堂精品| 欧美小视频在线| 国产精品一区二区三区久久久| 色樱桃影院亚洲精品影院| 亚洲欧洲国产精品| 青草成人免费视频| 久久久免费观看视频| 色综合久久悠悠| 疯狂做受xxxx欧美肥白少妇| 欧美性jizz18性欧美| 国内精品模特av私拍在线观看| 亚洲精品色婷婷福利天堂| 日韩欧美精品在线观看| 91老司机在线| 日韩福利在线播放| 成人伊人精品色xxxx视频| 91免费在线视频| 欧美性猛交xxxx乱大交3| 51精品在线观看| 国产suv精品一区二区三区88区| 欧美成人三级视频网站| 亚洲白拍色综合图区| 中文字幕日本精品| 中文字幕在线亚洲| 国产欧美日韩亚洲精品| 久久成年人免费电影| 欧美视频在线观看免费| 欧美性一区二区三区| 欧美一性一乱一交一视频| 欧美精品制服第一页| 中文字幕亚洲欧美日韩在线不卡| 精品国产乱码久久久久久虫虫漫画| 日本欧美中文字幕| 成人黄色免费看| 国产欧美日韩中文字幕在线| 欧美日韩亚洲一区二| 国产人妖伪娘一区91| 亚洲美女视频网| 国产精品99免视看9| 亚洲成人激情在线观看| 欧美疯狂性受xxxxx另类| 国内精品久久影院| 日韩欧美国产免费播放| 亚洲人成网在线播放| 亚洲成人三级在线| 91免费高清视频| 欧美伊久线香蕉线新在线| 亚洲缚视频在线观看| 欧美午夜久久久| 尤物九九久久国产精品的特点| 亚洲欧洲日产国码av系列天堂| 国产亚洲成精品久久| 国产精品久久久久久久av大片| 日韩天堂在线视频| 韩国v欧美v日本v亚洲| 亚洲护士老师的毛茸茸最新章节| 亚洲精品电影网在线观看| 精品少妇一区二区30p| 在线观看成人黄色| 精品国产欧美一区二区五十路| 国产午夜一区二区| 97视频在线播放| 欧美亚洲国产成人精品| 国产精品亚洲欧美导航| 亚洲精品视频免费| 国产精品欧美一区二区三区奶水| 亚洲国产小视频| 亚洲中国色老太| 懂色av一区二区三区|