Swift 類(lèi)和對(duì)象 7.22

Swift 類(lèi)和對(duì)象 7.22

class Dog {                     //類(lèi)名的首字母要大寫(xiě)
    //成員變量
    var kind: String = ""         //創(chuàng)建狗的品種
    var weight: Double = 0.0      //創(chuàng)建狗的重量  
    func bite(name: String) {      //假如狗會(huì)咬人
        print("Bite",name)
 }    
}

//與結(jié)構(gòu)體struct的區(qū)別
//1.用let定義的結(jié)構(gòu)體變量,成員不能修改
//2.結(jié)構(gòu)體是值類(lèi)型,在賦值的時(shí)候會(huì)發(fā)生復(fù)制
//3.類(lèi)是引用類(lèi)型
//4.結(jié)構(gòu)的成員是方法需要加mutating才能修改成員變量
//類(lèi)calss的默認(rèn)構(gòu)造是沒(méi)有參數(shù)的

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

init() {

 }

//函數(shù)//方法
//當(dāng)一個(gè)類(lèi)沒(méi)有創(chuàng)建構(gòu)造函數(shù)(init)時(shí),編譯器自動(dòng)生成一個(gè)無(wú)參數(shù)的構(gòu)造函數(shù),
//一旦創(chuàng)建自定義構(gòu)造函數(shù),編譯器將不會(huì)自動(dòng)生成構(gòu)造函數(shù)

let dog = Dog()                 //創(chuàng)建對(duì)象,在堆上分配空間
dog.kind = "吉娃娃"
dog.weight = 4
dog.bite("張三")
class Cat {
    var kind: String = ""
    var weight: Double = 0.0
    var name: String = ""
    
    func eat(food: Double) -> Double {
        weight += food
        return weight
        
    }
    
    class func Animal() -> Cat {
        return Cat() }
    
}
let cat01 = Cat()
dog.kind = "波斯貓"

//析構(gòu)函數(shù) 從程序中刪除,從內(nèi)存中釋放掉

deinit() {

}

//strong/weak
//強(qiáng)引用/弱引用
//當(dāng)一個(gè)的強(qiáng)引用個(gè)數(shù)大于0是,對(duì)象就不會(huì)被銷(xiāo)毀!!!
//變量默認(rèn)的類(lèi)型都是strong類(lèi)型
//weak的應(yīng)用類(lèi)型一定是Optional類(lèi)型(隱含) Dog?
//weak僅僅是通過(guò)變量(引用)找到對(duì)象而已 (只是使用)
//strong強(qiáng)引用可以維持對(duì)象不被銷(xiāo)毀 (擁有)

var d1 = Dog()
var d2 = d1

let ani03 = Cat.Animal()
ani03.name = "Katty"
print(ani03.name)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容