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{
}