一、構造器重載概念
函數重載概念也適用于構造器,條件如下:
1、函數有相同的名字‘
2、參數列表不同或返回值類型不同;
構造器滿足以下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 } }
二、值類型構造器類型
為了減少多個構造器間的代碼重復,在定義構造器時,可以通過調用其它的構造器來完成實例的構造部分,這個過程稱為構造器代理。構造器代理在值類型和引用類型中使用不同,
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) } }
三、引用類型構造器橫向代理
引用類型構造器代理是類構造器代理,由于類有繼承關系,類構造器代理比較復雜,分為橫向代理和向上代理
1、橫向代理類型類似于值類型構造器代理,發生在同一類內部,這種構造器稱為便利構造器;
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 } convenience init(length:Double){ self.init(W:length,H:length) } convenience init(){ self.init(length:10.0) self.height = 20.0 } }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。