Swift開發(fā)標(biāo)準(zhǔn)教程-類_第1頁
Swift開發(fā)標(biāo)準(zhǔn)教程-類_第2頁
Swift開發(fā)標(biāo)準(zhǔn)教程-類_第3頁
Swift開發(fā)標(biāo)準(zhǔn)教程-類_第4頁
Swift開發(fā)標(biāo)準(zhǔn)教程-類_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

類7.1類與對(duì)象7.2屬性7.3方法7.4下標(biāo)腳本7.5類的嵌套7.6可選鏈接7.7綜合案例7.8上機(jī)實(shí)踐7.1類與對(duì)象7.1.1類的組成7.1.2創(chuàng)建類7.1.3實(shí)例化對(duì)象7.1.1類的組成在一個(gè)類中通??梢园瑢傩浴⑾聵?biāo)腳本和方法。屬性:它將值和特定的類關(guān)聯(lián)。下標(biāo)腳本:訪問對(duì)象、集合等的快捷方式。方法:實(shí)現(xiàn)某一特定的功能,類似于函數(shù)。7.1.2創(chuàng)建類類的創(chuàng)建其實(shí)就是對(duì)類進(jìn)行的聲明,只有在聲明了類之后,才可以使用此類。創(chuàng)建類需要使用到class關(guān)鍵字,其語法形式如下:class類名{

//具體內(nèi)容}7.1.3實(shí)例化對(duì)象實(shí)例化對(duì)象就是將創(chuàng)建的類進(jìn)行具體化,其實(shí)就是定義類。其語法形式如下:var/let對(duì)象名=類名()7.2屬性7.2.1存儲(chǔ)屬性7.2.2計(jì)算屬性7.2.3類型屬性7.2.4屬性監(jiān)視器7.2.1存儲(chǔ)屬性存儲(chǔ)屬性就是存儲(chǔ)特定類或者結(jié)構(gòu)(結(jié)構(gòu)會(huì)在后面的章節(jié)中進(jìn)行講解)中的一個(gè)常量或者變量。1.定義存儲(chǔ)屬性存儲(chǔ)屬性可以根據(jù)數(shù)據(jù)是否可變,分為兩種:一種是常量存儲(chǔ)屬性;另一種是變量存儲(chǔ)屬性。存儲(chǔ)屬性的聲明和定義是在一起進(jìn)行的。在編程中如果聲明定義一起進(jìn)行,可以將聲明定義稱為定義。定義常量存儲(chǔ)屬性需要使用到let關(guān)鍵字,其定義的語法形式如下:let常量存儲(chǔ)屬性名:數(shù)據(jù)類型=初始值變量存儲(chǔ)屬性可以使用var關(guān)鍵字定義,其定義的語法形式如下:var變量存儲(chǔ)屬性名:數(shù)據(jù)類型=初始值2.訪問存儲(chǔ)屬性存儲(chǔ)屬性是可以進(jìn)行訪問的。要實(shí)現(xiàn)訪問功能,需要使用到“.”運(yùn)算符,其語法形式如下:對(duì)象名.常量存儲(chǔ)屬性名/變量存儲(chǔ)屬性名3.修改存儲(chǔ)屬性存儲(chǔ)屬性是可以進(jìn)行修改的,如果在定義存儲(chǔ)屬性時(shí),對(duì)存儲(chǔ)屬性初始化的值不滿意,開發(fā)者可以對(duì)該存儲(chǔ)屬性進(jìn)行修改。修改存儲(chǔ)屬性還需要使用到“.”點(diǎn)運(yùn)算符,其語法形式如下:對(duì)象名.存儲(chǔ)屬性=修改的內(nèi)容4.延遲存儲(chǔ)屬性如果開發(fā)者只有在第一次調(diào)用存儲(chǔ)屬性時(shí)才能確定初始值,這時(shí)需要使用延遲存儲(chǔ)屬性實(shí)現(xiàn)。它的定義一般需要使用關(guān)鍵字lazy實(shí)現(xiàn)的,其語法形式如下:lazyvar屬性名:數(shù)據(jù)類型=初始內(nèi)容7.2.2計(jì)算屬性在類中除了可以定義存儲(chǔ)屬性外,還可以定義計(jì)算屬性。計(jì)算屬性不存儲(chǔ)值,而是提供了一個(gè)getter和setter來分別進(jìn)行獲取值和設(shè)置其他屬性的值。getter使用get關(guān)鍵字進(jìn)行定義,其一般形式如下:get{

return某一屬性值}setter使用set關(guān)鍵字進(jìn)行定義,其一般語法形式如下:set(參數(shù)名稱){

…屬性值=某一個(gè)值

…}7.2.2計(jì)算屬性在計(jì)算屬性中同時(shí)包含了getter和setter,其一般定義形式如下:var屬性名:數(shù)據(jù)類型{get{

return某一屬性值}set(參數(shù)名稱){

… 屬性值=某一個(gè)值

}}1.不定義set后面的參數(shù)名稱如果在計(jì)算屬性的setter中(即set后面)沒有定義表示新值的參數(shù)名,則可以使用默認(rèn)名稱newValue。2.可以使用getter在計(jì)算屬性中,如果只有一個(gè)getter,則稱為只讀計(jì)算屬性。只讀計(jì)算屬性可以返回一個(gè)值,但不能設(shè)置新的值。7.2.3類型屬性類型屬性就是不需要對(duì)類進(jìn)行實(shí)例化就可以使用的屬性。它需要使用關(guān)鍵字static進(jìn)行定義,其中定義存儲(chǔ)型類型屬性時(shí)的語法形式如下:static

var類型屬性名:數(shù)據(jù)類型=初始值定義計(jì)算型類型屬性的語法形式如下:static

var類型屬性名:數(shù)據(jù)類型{

…返回一個(gè)值}1.訪問類型屬性類型屬性和以存儲(chǔ)屬性、計(jì)算屬性一樣,也是可以被訪問的,其訪問類型屬性的一般形式如下:類名.類型屬性2.修改類型屬性類型屬性和存儲(chǔ)屬性一樣,除了可以進(jìn)行訪問外,還可以進(jìn)行修改,其語法形式如下:類名.類型屬性=修改的內(nèi)容7.2.4屬性監(jiān)視器屬性監(jiān)視器用來監(jiān)控和響應(yīng)屬性值的變化。每次屬性被設(shè)置值的時(shí)候,都會(huì)調(diào)用屬性監(jiān)視器,哪怕是新的值和原先的值相同。一個(gè)屬性監(jiān)視器由willSet和didSet組成,其定義形式如下:var屬性名:數(shù)據(jù)類型=初始值{willSet(參數(shù)名){

…}didSet(參數(shù)名){

}}1.不指定參數(shù)名在willSet后面是可以不指定參數(shù)的,這時(shí)Swift會(huì)使用默認(rèn)newValue表示新值。2.分開使用willSet和didSet一個(gè)完整的屬性監(jiān)視器由willSet和didSet組成,但是willSet和didSet也可以單獨(dú)使用。7.3方法7.3.1實(shí)例方法7.3.2類型方法7.3.3存儲(chǔ)屬性、局部變量和全局變量的區(qū)別7.3.4局部變量和存儲(chǔ)屬性同名的解決方法——self屬性7.3.1實(shí)例方法實(shí)例方法為給定類型的實(shí)例封裝了具體的任務(wù)與功能。在類中可以定義實(shí)例方法,它需要由類的實(shí)例調(diào)用。實(shí)例方法和函數(shù)一樣,分為了不帶參數(shù)和帶參數(shù)兩種。以下依次講解這兩種方法的使用。1.不帶參數(shù)的實(shí)例方法不帶參數(shù)的實(shí)例方法定義和函數(shù)的是一樣的,其語法形式如下:func方法名()->返回值類型{

…}但它的調(diào)用形式和函數(shù)的有所不同,其調(diào)用形式如下:對(duì)象名.方法名()2.帶有參數(shù)的實(shí)例方法具有參數(shù)的實(shí)例方法就是在方法名后面的括號(hào)中添加了參數(shù)列表。它的定義也和函數(shù)一樣,定義形式如下:func方法名(參數(shù)名1:數(shù)據(jù)類型,參數(shù)名2:數(shù)據(jù)類型,…)->返回值類型{

…}它的調(diào)用形式如下:對(duì)象名.方法名(參數(shù)值1,參數(shù)名2:參數(shù)值2,…)7.3.2類型方法實(shí)例方法是被類型的某個(gè)實(shí)例調(diào)用的方法。而類型方法則是被類本身調(diào)用的方法。在類中不僅可以定義實(shí)例方法,還可以定義類型方法。其中,類型方法也可以和實(shí)例方法一樣,分為不帶參數(shù)的類型方法和帶有參數(shù)的類型方法。1.不帶參數(shù)的類型方法定義帶到參數(shù)的類型方法可以實(shí)現(xiàn)static關(guān)鍵字進(jìn)行定義,其語法形式如下:staticfunc方法名()->返回值類型{

…}除了可以使用關(guān)鍵字static對(duì)不帶參數(shù)的類型方法進(jìn)行定義外,還可以使用class關(guān)鍵字對(duì)不帶參數(shù)的類型方法進(jìn)行定義,其語法形式如下:classfunc方法名()->返回值類型{

…}不帶參數(shù)的類型方法的調(diào)用形式如下:類名.方法名()2.具有參數(shù)的類型方法具有參數(shù)的類型方法在定義時(shí)有兩種形式,一種是使用static關(guān)鍵字,其語法形式如下:staticfunc方法名(參數(shù)名1:數(shù)據(jù)類型,參數(shù)名2:數(shù)據(jù)類型,…){

…}另一種是使用class關(guān)鍵字,其語法形式如下:classfunc方法名(參數(shù)名1:數(shù)據(jù)類型,參數(shù)名2:數(shù)據(jù)類型,…){

…}定義好類型方法后就可以進(jìn)行調(diào)用了,調(diào)用具有參數(shù)的類型方法的語法形式如下:類名.方法名(參數(shù)值1,參數(shù)名2:參數(shù)值2,…)7.3.3存儲(chǔ)屬性、局部變量和全局變量的區(qū)別存儲(chǔ)屬性可以理解為變量的一種。所以隨著變量使用地方的不同,可以將變量分為存儲(chǔ)屬性、局部變量和全局變量。變量名稱定義范圍存儲(chǔ)屬性定義在類中局部變量函數(shù)、方法或閉包內(nèi)部全局變量函數(shù)、方法、閉包或任何類型之外定義的變量7.3.4局部變量和存儲(chǔ)屬性同名的解決方法——self屬性在一個(gè)類中,方法中的局部變量可能和存儲(chǔ)屬性同名。這時(shí),不能直接使用相同的名稱去訪問存儲(chǔ)屬性,為了解決這一問題,Swift引入了一個(gè)self屬性。7.4下標(biāo)腳本7.4.1定義下標(biāo)腳本7.4.2調(diào)用下標(biāo)腳本7.4.3使用下標(biāo)腳本7.4.1定義下標(biāo)腳本下標(biāo)腳本可以定義在類(Class)、結(jié)構(gòu)體(structure)和枚舉(enumeration)中(對(duì)于結(jié)構(gòu)體和枚舉會(huì)在后面的章節(jié)中進(jìn)行),其語法形式如下:subscript(參數(shù)名稱1:數(shù)據(jù)類型,參數(shù)名稱2:數(shù)據(jù)類型,…)->返回值的數(shù)據(jù)類型{

get{

//返回與參數(shù)類型匹配的類型的值

}

set(參數(shù)名稱){

//執(zhí)行賦值操作

}}7.4.2調(diào)用下標(biāo)腳本定義好下標(biāo)腳本后,就可以進(jìn)行調(diào)用了,其調(diào)用形式如下:實(shí)例對(duì)象[參數(shù)1,參數(shù)2,…]其中,[]和它里面的內(nèi)容就代表了在類中定義的下標(biāo)腳本。7.4.3使用下標(biāo)腳本下標(biāo)腳本可以根據(jù)傳入?yún)?shù)的不同,分為具有一個(gè)傳入?yún)?shù)的下標(biāo)腳本和具有多個(gè)傳入?yún)?shù)的下標(biāo)腳本。以下就是對(duì)這兩個(gè)下標(biāo)腳本在類中的使用。1.具有一個(gè)傳入?yún)?shù)的下標(biāo)腳本具有一個(gè)傳入?yún)?shù)的下標(biāo)腳本是最常見的。在集合以及字符串中使用的下標(biāo)就是具有一個(gè)傳入?yún)?shù)的下標(biāo)腳本。2.具有多個(gè)參數(shù)的下標(biāo)腳本具有多個(gè)入?yún)?shù)的下標(biāo)腳本一般使用在多維數(shù)組中。7.5類的嵌套7.5.1直接嵌套7.5.2多次嵌套7.5.1直接嵌套當(dāng)一個(gè)類或者多個(gè)類直接嵌套在另外一個(gè)類,這時(shí)就構(gòu)成直接嵌套。7.5.2多次嵌套多次嵌套就是在類1中嵌套類2,但是在類2中有嵌套了類3,依次類推。7.6可選鏈接7.6.1使用可選鏈?zhǔn)秸{(diào)用代替強(qiáng)制解析7.6.2通過可選鏈接調(diào)用屬性、下標(biāo)腳本、方法7.6.3連接多個(gè)鏈接7.6.1使用可選鏈?zhǔn)秸{(diào)用代替強(qiáng)制解析開發(fā)者可以在想要調(diào)用的屬性、下標(biāo)腳本和方法的可選值后面添加一個(gè)“?”問號(hào)來進(jìn)行可選鏈接的定義。開發(fā)者通過對(duì)選鏈?zhǔn)秸{(diào)用可以代替強(qiáng)制解析。7.6.2通過可選鏈接調(diào)用屬性、下標(biāo)腳本、方法開發(fā)者可以使用可選鏈接的可選值來調(diào)用屬性、下標(biāo)腳本和方法,并檢查這些內(nèi)容調(diào)用是否成功,1.調(diào)用屬性通過可選鏈接調(diào)用屬性的語法形式如下:可選鏈接.屬性名

//調(diào)用屬性2.調(diào)用方法通過可選鏈接調(diào)用方法的語法形式如下:可選鏈接.方法

//調(diào)用方法3.調(diào)用下標(biāo)腳本通過可選鏈接調(diào)用下標(biāo)腳本的語法形式如下:可選鏈接.[下標(biāo)]

//調(diào)用下標(biāo)腳本7.6.3連接多個(gè)鏈接開發(fā)者可以通過連接多個(gè)可選鏈?zhǔn)秸{(diào)用在更深的模型層級(jí)中屬性、方法以及下標(biāo)。然而,多層可選鏈?zhǔn)秸{(diào)用不會(huì)增加返回值的可選層級(jí)。7.7綜合案例7.7.1收支情況7.7.2根據(jù)周長(zhǎng),計(jì)算面積7.7.1收支情況【程序7-28】有一個(gè)工程師,有存款2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論