溫馨提示×

溫馨提示×

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

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

構(gòu)造器重載

發(fā)布時間:2020-07-04 17:14:49 來源:網(wǎng)絡(luò) 閱讀:261 作者:hehemmm 欄目:開發(fā)技術(shù)

一、構(gòu)造器重載概念

        函數(shù)重載概念也適用于構(gòu)造器,條件如下:

    1、函數(shù)有相同的名字‘

    2、參數(shù)列表不同或返回值類型不同;


    構(gòu)造器滿足以下2個條件:

    

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(){
                    width = 10.0
                    height = 20.0
}
}




二、值類型構(gòu)造器類型

        

            為了減少多個構(gòu)造器間的代碼重復(fù),在定義構(gòu)造器時,可以通過調(diào)用其它的構(gòu)造器來完成實例的構(gòu)造部分,這個過程稱為構(gòu)造器代理。構(gòu)造器代理在值類型和引用類型中使用不同,

            

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.init(width:width,height:height)
}
                
                init(length:Double){
                    self.init(width:length,height:length)
}
                init(){
                    self.init(width:60,height:80)
}
}


三、引用類型構(gòu)造器橫向代理


            引用類型構(gòu)造器代理是類構(gòu)造器代理,由于類有繼承關(guān)系,類構(gòu)造器代理比較復(fù)雜,分為橫向代理和向上代理


            1、橫向代理類型類似于值類型構(gòu)造器代理,發(fā)生在同一類內(nèi)部,這種構(gòu)造器稱為便利構(gòu)造器;

             2、向上代理發(fā)生在繼承情況下,在子類型構(gòu)造過程中要先調(diào)用父類構(gòu)造器,初始化父類的存儲屬性,這種構(gòu)造器稱為指定構(gòu)造器。


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(length:10.0)
                    self.height = 20.0
}
}


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI