91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

《從零開始學Swift》學習筆記(Day 39)——構造函數重載

發布時間:2020-03-03 05:57:53 來源:網絡 閱讀:220 作者:tony關東升 欄目:移動開發


原創文章,歡迎轉載。轉載請注明:關東升的博客

 

構造函數作為一種特殊方法,也可以重載。

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)  
print("長方形:\(rectc1.width) x\(rectc1.height)")
 
var rectc2 = Rectangle(W: 320.0, H: 480.0)           
print("長方形:\(rectc2.width) x\(rectc2.height)")
 
var rectc3 =Rectangle(length: 500.0)                
print("長方形3:\(rectc3.width) x\(rectc3.height)")
 
var rectc4 = Rectangle()                        
print("長方形4:\(rectc4.width) x\(rectc4.height)")


 

構造函數代理

為了減少多個構造函數間的代碼重復,在定義構造函數時,可以通過調用其他構造函數來完成實例的部分構造過程,這個過程稱為構造函數代理。構造函數代理在結構體和類中使用方式是不同,先介紹結構體中構造函數代理。

將上一節的示例修改如下:

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語句
        self.init(W: length, H: length)
    }
 
    init() {                              //調用了self.init語句
        self.init(width: 640.0, height: 940.0)
    }
 
}
 
var rectc1 =Rectangle(width: 320.0, height: 480.0)  
print("長方形:\(rectc1.width) x\(rectc1.height)")
 
var rectc2 = Rectangle(W: 320.0, H: 480.0)           
print("長方形:\(rectc2.width) x\(rectc2.height)")
 
var rectc3 =Rectangle(length: 500.0)                
print("長方形3:\(rectc3.width) x\(rectc3.height)")
 
var rectc4 = Rectangle()                        
print("長方形4:\(rectc4.width) x \(rectc4.height)")


Rectangle聲明為結構體類型,其中也有4個構造函數重載。

這種在同一個類型中通過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)  
print("長方形:\(rectc1.width) x\(rectc1.height)")
 
var rectc2 = Rectangle(W: 320.0, H: 480.0)           
print("長方形:\(rectc2.width) x\(rectc2.height)")
 
var rectc3 =Rectangle(length: 500.0)                
print("長方形3:\(rectc3.width) x\(rectc3.height)")
 
var rectc4 = Rectangle()                        
print("長方形4:\(rectc4.width) x\(rectc4.height)")


Rectangle聲明為類,其中也有4個構造函數重載。

 

歡迎關注關東升新浪微博@tony_關東升。
關注智捷課堂微信公共平臺,了解最新技術文章、圖書、教程信息
                              《從零開始學Swift》學習筆記(Day 39)——構造函數重載

更多精品iOSCocos、移動設計課程請關注智捷課堂官方網站:http://www.zhijieketang.com
智捷課堂論壇網站:http://51work6.com/forum.php

 

 


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

秀山| 逊克县| 菏泽市| 德兴市| 景洪市| 河北省| 海宁市| 肃宁县| 化德县| 南华县| 尉氏县| 乌拉特前旗| 新晃| 锦屏县| 湖口县| 镇赉县| 土默特右旗| 庆安县| 西林县| 深水埗区| 永顺县| 柯坪县| 泽州县| 湘潭市| 忻城县| 凌云县| 凤凰县| 巴南区| 中山市| 绥阳县| 遂溪县| 瑞金市| 阿拉善盟| 石家庄市| 哈尔滨市| 任丘市| 天镇县| 连山| 安阳县| 江阴市| 双江|