版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、若希望輸出對(duì)象的信息(一般為實(shí)例變量的值),若希望輸出對(duì)象的信息(一般為實(shí)例變量的值),則可以在類中添加則可以在類中添加description方法,該方法的返回值方法,該方法的返回值類型為類型為NSString *,即要求返回一個(gè)字符串用以描述當(dāng),即要求返回一個(gè)字符串用以描述當(dāng)前的對(duì)象的實(shí)例變量。前的對(duì)象的實(shí)例變量。通過在通過在NSLog()中使用中使用%格式說明符來輸出對(duì)象。格式說明符來輸出對(duì)象。NSObject類中名為類中名為description的方法可以返回對(duì)象的方法可以返回對(duì)象所屬所屬類的名稱和實(shí)例在內(nèi)存中的地址類的名稱和實(shí)例在內(nèi)存中的地址。我們可以通過我們可以通過NSLog()使用
2、使用%格式說明符來輸出對(duì)象格式說明符來輸出對(duì)象。NSLog()處理處理%時(shí),它會(huì)詢問參數(shù)列表中相應(yīng)的對(duì)象時(shí),它會(huì)詢問參數(shù)列表中相應(yīng)的對(duì)象以得到這個(gè)對(duì)象的描述。也就是說:以得到這個(gè)對(duì)象的描述。也就是說:NSLog()給這個(gè)對(duì)象給這個(gè)對(duì)象發(fā)送描述消息,然后對(duì)象的發(fā)送描述消息,然后對(duì)象的description方法生成一個(gè)方法生成一個(gè)NSString并返回。之后并返回。之后NSLog在其輸出中包含這個(gè)字符在其輸出中包含這個(gè)字符串。串。例如,在例如,在main中添加如下測試語句:中添加如下測試語句:則輸出結(jié)果為:則輸出結(jié)果為:可以根據(jù)需要,可以根據(jù)需要,在自定義類中重寫在自定義類中重寫descripti
3、on方法方法,來獲取這個(gè)類的更詳盡的信息。注意,來獲取這個(gè)類的更詳盡的信息。注意,description方法方法可以不在類的接口中進(jìn)行聲明??梢圆辉陬惖慕涌谥羞M(jìn)行聲明。在自定義的在自定義的description方法中,需要返回一個(gè)字符串方法中,需要返回一個(gè)字符串,即,即NSString *。例如,在實(shí)現(xiàn)文件中重寫例如,在實(shí)現(xiàn)文件中重寫description方法:方法:則則 輸出結(jié)果為:輸出結(jié)果為:繼承繼承復(fù)合復(fù)合超類子類1子類2整體部件1部件2集體個(gè)體1個(gè)體2繼承在對(duì)象間建立了繼承在對(duì)象間建立了“is a”is a”(是是一個(gè))一個(gè))的關(guān)系。的關(guān)系。三角形是一個(gè)形狀。三角形是一個(gè)形狀。復(fù)合建立
4、的則是復(fù)合建立的則是“has a”has a”(有有一個(gè))一個(gè))的關(guān)系。的關(guān)系。如果能說如果能說“X X有一個(gè)有一個(gè)Y”Y”,就可以使用復(fù)合,就可以使用復(fù)合復(fù)合復(fù)合復(fù)合復(fù)合繼承繼承復(fù)合復(fù)合/組合組合:在一個(gè)新的對(duì)象里使用一些已有的對(duì)象,使之成為新對(duì)象的一部分,新對(duì)象通過調(diào)用已有對(duì)象的方法達(dá)到復(fù)用其已有功能的目的。interface Unicycle : NSObject Pedal *pedal;/踏板 Tire *tire; /輪子end / Unicycle獨(dú)輪車UnicyclePedalTire在在Objective-C中,復(fù)合是通過中,復(fù)合是通過包包含作為實(shí)例變量的對(duì)象指針含作為實(shí)例變
5、量的對(duì)象指針實(shí)現(xiàn)的。實(shí)現(xiàn)的。在復(fù)合中,對(duì)象可以引用其他對(duì)象,在復(fù)合中,對(duì)象可以引用其他對(duì)象,在引用時(shí)還可以利用其他對(duì)象提供在引用時(shí)還可以利用其他對(duì)象提供的特性。的特性。實(shí)例汽車組裝版本一:單一零件類型1一輛汽車一輛汽車 有有 1臺(tái)發(fā)動(dòng)機(jī)臺(tái)發(fā)動(dòng)機(jī) 和和 4個(gè)輪胎個(gè)輪胎CarEngineTire1411interface Tire : NSObjectendimplementation Tire- (NSString *) descriptionreturn (I am a tire. I last a while);endinterface Engine : NSObjectendimpleme
6、ntation Engine- (NSString *) descriptionreturn (I am an engine. Vrooom!); end12interface Car : NSObjectTire *tires4;property (nonatomic, retain) Engine *engine;- (Tire *) tireAtIndex: (int) index;- (void) setTire: (Tire *) tire atIndex: (int) index;- (void) print;end / Car方法名是方法名是setTire:atIndex:用一個(gè)
7、用一個(gè)Engine對(duì)象和四個(gè)對(duì)象和四個(gè)Tire對(duì)象組對(duì)象組合出虛擬的合出虛擬的Car實(shí)例,則該虛擬實(shí)例,則該虛擬Car實(shí)例應(yīng)該擁有一個(gè)指向?qū)嵗龖?yīng)該擁有一個(gè)指向Engine對(duì)象對(duì)象的指針和四個(gè)指向的指針和四個(gè)指向Tire對(duì)象的指針。對(duì)象的指針。13- (void) setTire: (Tire *) tire atIndex: (int) indexif (index 3) NSLog (bad index (%d) in setTire:atIndex:,index);exit (1); tiresindex = tire; / setTire:atIndex:-(Tire *)tireAtI
8、ndex: (int) index if (index 3) NSLog (bad index (%d) in tireAtIndex:”, index); exit (1); return (tiresindex); / tireAtIndex:Tire *tire = Tire new;car setTire: tire atIndex: 2;NSLog (tire number two is %,car tireAtIndex: 2);防御式編程防御式編程:在存取方法中使用通用代:在存取方法中使用通用代碼來檢查實(shí)例變量的數(shù)組索引碼來檢查實(shí)例變量的數(shù)組索引,以保證它以保證它是有效數(shù)值是有效
9、數(shù)值,若是超出了有效范圍,那么若是超出了有效范圍,那么程序就會(huì)輸出錯(cuò)誤信息并且退出。程序就會(huì)輸出錯(cuò)誤信息并且退出。- (void) printNSLog (%, engine);NSLog (%, tires0);NSLog (%, tires1);NSLog (%, tires2);NSLog (%, tires3);14 Car *aCar = Car allocinit; aCar.engine = Engine allocinit;for (int i=0; i4; i+) aCar setTire:Tire allocinit atIndex:i;aCar print;實(shí)例汽車組裝版
10、本二:多零件類型2用用繼承繼承方式來創(chuàng)建新的發(fā)動(dòng)機(jī)和輪胎種類方式來創(chuàng)建新的發(fā)動(dòng)機(jī)和輪胎種類,然后,然后利用利用Car類的存取方法(復(fù)合方式)類的存取方法(復(fù)合方式)給汽車配置新的移動(dòng)部件。給汽車配置新的移動(dòng)部件。原來的程序只能創(chuàng)建原來的程序只能創(chuàng)建相同類型發(fā)動(dòng)機(jī)和輪相同類型發(fā)動(dòng)機(jī)和輪胎的汽車。胎的汽車。改裝后的汽車:改裝后的汽車:17interface Slant6 : Engineendimplementation Slant6- (NSString *) descriptionreturn (I am a slant- 6. VROOOM!);end18interface AllWeath
11、erRadial : Tireendimplementation AllWeatherRadial- (NSString *) descriptionreturn (I am a tire for rain or shine.);end19 Car *aCar = Car allocinit; aCar.engine = Slant6 allocinit;for (int i=0; i4; i+) aCar setTire:AllWeatherRadial allocinit atIndex:i;aCar print;實(shí)例汽車組裝版本三:增加輪胎屬性3rainHandling/潮濕系數(shù)snowHandling/積雪系數(shù)AllWeatherRadialinitWithPressure: ThreadDepth:RainHandling: SnowHandling:pressure/輪胎壓力treadDepth/胎面花紋深度TireinitWithPressure:ThreadDepth:initWithPressure:initWithThreadD
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 17910-2025工業(yè)車輛叉車貨叉在使用中的檢查和修復(fù)
- 2025年高職幼兒保育(幼兒教育趨勢分析)試題及答案
- 2025年中職藥劑(藥物咨詢)試題及答案
- 2025年中職(新能源汽車運(yùn)用與維修)充電系統(tǒng)檢測試題及答案
- 2025年高職(植物保護(hù)與檢疫技術(shù))病蟲害監(jiān)測階段測試題及答案
- 2025年中職醫(yī)療社會(huì)工作(醫(yī)療社工基礎(chǔ))試題及答案
- 2025年中職鐵道運(yùn)輸服務(wù)(安全管理)試題及答案
- 2025年中職機(jī)械設(shè)計(jì)(零件設(shè)計(jì))試題及答案
- 2025年高職無人機(jī)應(yīng)用技術(shù)(測繪應(yīng)用)模擬試題
- 2025年高職航空安全技術(shù)管理(航空安全方案)技能測試題
- 2025至2030中國背板連接器行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報(bào)告
- T/CCMA 0173-2023流動(dòng)式起重機(jī)用高性能平衡閥
- GB/T 18910.103-2025液晶顯示器件第10-3部分:環(huán)境、耐久性和機(jī)械試驗(yàn)方法玻璃強(qiáng)度和可靠性
- 夢雖遙追則能達(dá)愿雖艱持則可圓模板
- 配件售后管理制度規(guī)范
- 勵(lì)志類的美文欣賞范文(4篇)
- 浙江省紹興市上虞區(qū)2024-2025學(xué)年七年級(jí)上學(xué)期期末語文試題(解析版)
- 廣東省廣州市白云區(qū)2024-2025學(xué)年六年級(jí)(上)期末語文試卷(有答案)
- GB/T 45166-2024無損檢測紅外熱成像檢測總則
- 山東省菏澤市東明縣2024-2025學(xué)年七年級(jí)上學(xué)期考試生物試題
- 二零二四年醫(yī)院停車場建設(shè)及運(yùn)營管理合同
評(píng)論
0/150
提交評(píng)論