iOS 開發(fā) OC基礎(chǔ)篇之類的特性

OC是面向?qū)ο蟮恼Z言,面向?qū)ο蟪绦蛟O(shè)計中的類有三大特性:繼承,封裝,多態(tài) 。

封裝:

封裝就是對類中的一些字段,方法進(jìn)行保護(hù),不被外界所訪問到。

OC中的類也有權(quán)限控制的功能,但基本不用,在實(shí)際開發(fā)中私有的只在.m文件中實(shí)現(xiàn)就好了,這意味只實(shí)現(xiàn)未聲明。

繼承:

繼承是類中的一個重要的特性,他的出現(xiàn)使得我們沒必要別寫重復(fù)的代碼,可重用性很高。

這個我感覺沒什么可以說的,和Java一樣。

多態(tài):

 簡單的說,就是一句話:允許將子類類型的指針賦值給父類類型的指針。

多態(tài)對于面向?qū)ο笏枷雭碚f,個人感覺是真的很重要,他對以后的編寫代碼的優(yōu)雅方式也是起到很重要的作用,其實(shí)現(xiàn)在很多設(shè)計模式中大部分都是用到了多態(tài)的特性,Java中的多態(tài)特性用起來很是方便的,但是C++中就很難用了,其實(shí)多態(tài)說白了就是:定義類型和實(shí)際類型,一般是基于接口的形式實(shí)現(xiàn)的,還是看代碼,這比較抽象。

main.png

person有個feedAnimal方法,傳入的是Animal的對象。Animal有個eat方法,cat和dog 是繼承于Animal的。三個都實(shí)例化,person調(diào)用feedAnimal方法傳入相應(yīng)的對象,打印出來的是各自的類名,這就是多態(tài)的一個表現(xiàn)。

多態(tài)的局限性

父類類型的對象不能直接調(diào)用子類對象特有的方法,如果必須要調(diào)用,則必須將父類對象強(qiáng)制轉(zhuǎn)換成子類對象。

EBF92BAC-D404-4F93-92E2-DE4E4398252B.png

在Cat類中寫了一個sleep方法;在main函數(shù)直接用Animal調(diào)用會報錯

EBF92BAC-D404-4F93-92E2-DE4E4398252B.png

錯誤提示為:No visible @interface for 'LeeAnimal' declares the selector 'sleep' 未定義該方法。

so父類類型的對象不能直接調(diào)用子類對象特有的方法,如果必須要調(diào)用,則必須將父類對象強(qiáng)制轉(zhuǎn)換成子類對象。

ps:本文僅是我的一些理解,如有錯誤,望指正。

最后編輯于
?著作權(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)容

  • 1.import static是Java 5增加的功能,就是將Import類中的靜態(tài)方法,可以作為本類的靜態(tài)方法來...
    XLsn0w閱讀 1,428評論 0 2
  • 面向?qū)ο笾饕槍γ嫦蜻^程。 面向過程的基本單元是函數(shù)。 什么是對象:EVERYTHING IS OBJECT(萬物...
    sinpi閱讀 1,220評論 0 4
  • 2014年的蘋果全球開發(fā)者大會(WWDC),當(dāng)Craig Federighi向全世界宣布“We have new ...
    yeshenlong520閱讀 2,402評論 0 9
  • Win7下如何打開DOS控制臺? a:開始--所有程序--附件--命令提示符 b:開始--搜索程序和文件--cmd...
    逍遙嘆6閱讀 1,710評論 4 12
  • 讓孩子變成一個聽話的孩子,還是讓孩子變成一個有奴性的孩子? 作為一個傳統(tǒng)潮汕家庭,我的父母是有絕對威嚴(yán)的。雖然不嚴(yán)...
    Aiiim閱讀 751評論 0 0

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