10.27類,對象

三個swift文件:

主文件:main.swift:

importFoundation

//如果在swift中引用其他我們自定義的類,不用導(dǎo)入頭文件,直接使用

//如果是導(dǎo)入第三方的話,就需要引用

//面向過程:注重功能實(shí)現(xiàn)的一個過程

//面向?qū)ο?,注重?shí)現(xiàn)功能所要參與的對象

//創(chuàng)建Person對象

//類名()代表該類調(diào)用系統(tǒng)默認(rèn)的實(shí)例化方法

letperson0 =Person()

//訪問對象的屬性采用點(diǎn)語法

println(person0.name)

println(person0.age)

//給必選類型的屬性進(jìn)行賦值操作

person0.name="lisi"

person0.age=15

println(person0.name)

println(person0.age)

//給可選類型的屬性進(jìn)行賦值操作

person0.grade="五年級"

person0.count=5

println(person0.grade!)

println(person0.count!)

//創(chuàng)建animal對象,并且賦值

letanimal0 =Animal()

animal0.age=8

animal0.type="smallDog"

println(animal0.age)

println(animal0.type!)

letdog =Animal(age:2, type:"cat")

println(dog.age)

println(dog.type!)

//練習(xí)題1

//新建兩個類,每一個類有三個屬性,給每一個類重載構(gòu)造方法并使用TA

//鍵值編碼:KVC(key-value-coding)

//是一種通過字符串間接訪問對象屬性的一種方式

letanimal1 =Animal()

animal1.setValue("horse", forKey:"type")

//key要跟你要設(shè)置的屬性的名字一樣的字符串

println(animal1.type!)

//在進(jìn)行KVC賦值的時候,類的屬性如果是基本數(shù)據(jù)類型的話,不能是可選類型的

animal1.setValue(22, forKey:"age")

println(animal1.age)

//字典轉(zhuǎn)模型

letanimal2 =Animal()

letdict = ["type":"monkey","age":12]

animal2.setValue(dict["type"], forKey:"type")

animal2.setValue(dict["age"], forKey:"age")

animal2.setValuesForKeysWithDictionary(dict)

println(animal2.type)

println(animal2.age)

//setValuesForKeysWithDictionary(dict)會將字典dict里面的key跟對象屬性的名字進(jìn)行對比,如果一樣的話就將key對應(yīng)的value設(shè)置到對象的屬性上,會在底層重復(fù)的調(diào)用setValue(value,forKey:key)



person.swift:

importFoundation

//類是一類物體的共有性抽象

//對象是某一類的一個具體

classPerson:NSObject{

//類一般有屬性和方法構(gòu)成

//定義屬性:

// var name:String = "zhangsan"

//var age:Int = 12

//必選類型的初始化

varname:String

varage:Int

//可選類型初始化

vargrade:String?

varcount:Int?

//override表示該方法是從父類那邊繼承過來的

//外部使用類名()方式創(chuàng)建對象就會默認(rèn)調(diào)用下面該方法

overrideinit() {

//必選類型(不是可選類型)的初始化一定要在調(diào)用super.init()之前完成

name="zhangsan"

age=27

super.init()//調(diào)用父類的初始化方法

}

}



animal.swift:

importFoundation

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

classAnimal:NSObject{

varage:Int=0

vartype:String?

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

init(age:Int,type:String){

super.init()//只要在init()方法里面,一定要調(diào)用super.init()

//如果參數(shù)列表參數(shù)名字和類的屬性名一樣,就需要使用self調(diào)用,否則不用

self.age= age

self.type= type

}

//如果重載了構(gòu)造方法,同時沒有寫上系統(tǒng)默認(rèn)的構(gòu)造方法,外界是沒法訪問到該類默認(rèn)的構(gòu)造方法

overrideinit() {

super.init()

}

//這個方法是為了解決字典里面的一些key值該模型里面沒有導(dǎo)致的系統(tǒng)奔潰

overridefuncsetValue(value:AnyObject?, forKey key:String) {

}

/*

init(tempAge:Int,tempType:String){

super.init()

age = tempAge

type = tempType

}

*/

}

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

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

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 4,190評論 1 10
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評論 19 139
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile麗語閱讀 4,091評論 0 6
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,662評論 18 399
  • 歡迎來到小于的王者地盤,小于已經(jīng)更新了王者峽谷74位英雄(女媧教學(xué)已經(jīng)上線)全新的推薦出裝以及銘文搭配,大家關(guān)注小...
    王者小于幫閱讀 601評論 0 2

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