swift類和結(jié)構(gòu)體以及枚舉

swift中類,結(jié)構(gòu)體,枚舉都具有面對對象特征;但是swift中只有類才能繼承,結(jié)構(gòu)體和枚舉不能

swift語言很重視結(jié)構(gòu)體,swift中的結(jié)構(gòu)體不僅能定義成員變量,還可以定義成員方法,但是結(jié)構(gòu)體不具有繼承性,不具備強制類型轉(zhuǎn)換、析構(gòu)函數(shù)、使用引用計數(shù)等能力

枚舉:

enum WeekDays{

? ? case Mondy

? ? case Tesday

? ? case Wednesday

? ? funcwrite(){

? ? ? ? print("hehe")

? ? }

}

var day =WeekDays.Mondy;

day.write();

類的定義:class 類名{定義類的成員}

結(jié)構(gòu)體的定義:struct 結(jié)構(gòu)體名{定義結(jié)構(gòu)體的成員}

類:class Employee{

var no:Int = 30

static var courseCount : Int = 11?// 定義類屬性,不能用class

func saveUsedNum(num :NSInteger) -> Void { num} ?//實例函數(shù)

class func getRandomNum() ->NSInteger{ return 1;} //類函數(shù),class和static都可以但是只可以用一個

}

let emp = Employee() ?//類是引用類型,內(nèi)部的內(nèi)容可以發(fā)生改變所以一般設(shè)為let

print(Employee.courseCount) //輸出11

print(Employee.getRandomNum()) //輸出1

print(emp.no) //輸出30

print(emp.saveUsedNum(num: 10)) //輸出10

結(jié)構(gòu)體:struct?Department{

var no:Int = 0

var name: String = ""

}

var dept =?Department() ?

構(gòu)造和析構(gòu):

構(gòu)造函數(shù):

class Rectangle{

? ? var width:Double=0.0

? ? var height:Double=0.0

}

var rect =Rectangle() //這樣調(diào)用使用了系統(tǒng)自動生成的默認構(gòu)造函數(shù)

相當于:

class Rectangle{

? ? var width:Double=0.0

? ? var height:Double=0.0

? ? int(){

? ? }

}

而結(jié)構(gòu)體的默認構(gòu)造函數(shù)和類的構(gòu)造函數(shù)不同,下面看結(jié)構(gòu)體的例子:

struct Rectangle{

? ? var width:Double=0.0

? ? var height:Double=0.0

}

var rect =Rectangle(width:0.2,height:0.3);這兒與類不同,因為這個類的聲明相當于如下代碼:

struct Rectangle{

? ? var width:Double=0.0

? ? var height:Double=0.0

? ? init(){}

? ? init(width:Double,height:Double){self.width=width

? ? ? ? self.height = height

? ?}

}

析構(gòu)函數(shù):deinit{

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容