最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Objective-C中的重載和重寫詳解

 更新時(shí)間:2016年11月17日 10:54:04   作者:程序員小強(qiáng)  
這篇文章主要介紹了Objective-C中的重載和重寫詳解的相關(guān)資料,開發(fā)IOS APP的好多朋友很容易搞錯(cuò)重載和重寫,這里就詳細(xì)介紹下,需要的朋友可以參考下

Objective-C 重載和重寫

首先,Objective-C中不完全支持重載,網(wǎng)上很多人要么將重載和重寫搞混,要么說OC不支持重載(當(dāng)然按照重載嚴(yán)格定義說OC不支持重載也沒錯(cuò)),事實(shí)上OC支持參數(shù)個(gè)數(shù)不同的函數(shù)重載。

問題: Objective-C和Swift中有重載嗎?

Swift中有重載,但Objective-C中基本不支持重載。

展開:

重載、重寫和隱藏三者在編程語言中的定義

重載(overload):函數(shù)名相同,函數(shù)的參數(shù)列表不同(包括參數(shù)個(gè)數(shù)和參數(shù)類型),至于返回類型可同可不同。重載既可以發(fā)生在同一個(gè)類的不同函數(shù)之間,也可發(fā)生在父類子類的繼承關(guān)系之間,其中發(fā)生在父類子類之間時(shí)要注意與重寫區(qū)分開。

重寫(override):發(fā)生于父類和子類之間,指的是子類不想繼承使用父類的方法,通過重寫同一個(gè)函數(shù)的實(shí)現(xiàn)實(shí)現(xiàn)對(duì)父類中同一個(gè)函數(shù)的覆蓋,因此又叫函數(shù)覆蓋。注意重寫的函數(shù)必須和父類一模一樣,包括函數(shù)名、參數(shù)個(gè)數(shù)和類型以及返回值,只是重寫了函數(shù)的實(shí)現(xiàn),這也是和重載區(qū)分開的關(guān)鍵。

隱藏:重載和重寫區(qū)分開后,隱藏又有可能會(huì)跟前兩者混在一起。當(dāng)然OC中也沒有隱藏,典型的C++中有,通過虛函數(shù)和父子類之間的函數(shù)重載進(jìn)行區(qū)分,此處不再討論。其中重載和重寫是針對(duì)函數(shù)的,而隱藏除了函數(shù)還會(huì)針對(duì)成員變量。隱藏發(fā)生在父類和子類之間,隱藏指的是父類的同名函數(shù)或變量在子類中隱藏,其中只要函數(shù)同名就隱藏,不管參數(shù)相同與否。在子類中父類的同名函數(shù)或變量不可見,但在父類中依然存在。

Swift是基于C語言和OC語言優(yōu)化后更加完善的新型語言,擺脫了C的兼容性限制,采用安全的編程模式并且增加了一些新的特性使編程更加有趣、友好,適應(yīng)語言發(fā)展的趨勢(shì)和期望。函數(shù)重載作為多態(tài)性的一個(gè)部分在Swift中是支持的,可能也是考慮到要彌補(bǔ)OC中不完全支持函數(shù)重載的這一缺陷。OC不完全支持重載,因?yàn)镺C學(xué)習(xí)者應(yīng)該會(huì)發(fā)現(xiàn)同一個(gè)類中不允許定義函數(shù)名相同且參數(shù)個(gè)數(shù)相同的兩個(gè)函數(shù),無論參數(shù)類型和返回值類型相同與否。但是說完全不支持也太絕對(duì),因?yàn)镺C中允許定義函數(shù)名相同但參數(shù)個(gè)數(shù)不同的兩個(gè)函數(shù),也就是說OC支持參數(shù)個(gè)數(shù)不同的函數(shù)重載。

例如,我們可以在一個(gè)類中定義兩個(gè)參數(shù)個(gè)數(shù)不同的函數(shù),調(diào)用時(shí)通過參數(shù)個(gè)數(shù)進(jìn)行區(qū)分:

重載函數(shù)定義:

- (void)test:(int)one;
- (void)test:(int)one andTwo:(int)two;

重載函數(shù)實(shí)現(xiàn):

- (void)test:(int)one {
  NSLog(@"one parameter!");
}


- (void)test:(int)one andTwo:(int)two {
  NSLog(@"two parameters!");
}

多態(tài)調(diào)用:

[self test:1];          // output:one parameter!
[self test:1 andTwo:2]; // output:two parameter!

可以看出OC可以通過參數(shù)個(gè)數(shù)實(shí)現(xiàn)函數(shù)重載,但是如果參數(shù)相同,無論參數(shù)和返回值類型相同與否都無法編譯通過。下面的定義是無法通過xcode的編譯的:

- (void)test:(int)one;
- (int)test:(float)one; // Duplicate declaration of method 'test'

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • iOS 11 safeArea詳解及iphoneX 適配

    iOS 11 safeArea詳解及iphoneX 適配

    本篇文章主要介紹了iOS 11 safeArea詳解及iphoneX 適配,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • iOS實(shí)現(xiàn)點(diǎn)贊動(dòng)畫特效

    iOS實(shí)現(xiàn)點(diǎn)贊動(dòng)畫特效

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)點(diǎn)贊動(dòng)畫特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • iOS實(shí)現(xiàn)簡(jiǎn)易的計(jì)算器

    iOS實(shí)現(xiàn)簡(jiǎn)易的計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)簡(jiǎn)易的計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • iOS實(shí)現(xiàn)百度外賣頭像波浪的效果

    iOS實(shí)現(xiàn)百度外賣頭像波浪的效果

    對(duì)于現(xiàn)在很多人來說,叫外賣就成了不可或缺的習(xí)慣。某日瞬間發(fā)現(xiàn)百度外賣的APP波浪效果很是吸引人,相比較其他的外賣APP,顏值略高些.(淘寶也有波浪的效果),遂就思考如何實(shí)現(xiàn)這種"浪"的效果,下面來一起看看。
    2016-08-08
  • iOS 中Swift仿微信添加提示小紅點(diǎn)功能(無數(shù)字)

    iOS 中Swift仿微信添加提示小紅點(diǎn)功能(無數(shù)字)

    這篇文章主要介紹了iOS 中Swift仿微信添加提示小紅點(diǎn)功能(無數(shù)字),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-05-05
  • 詳解Objective C 中Block如何捕獲外部值

    詳解Objective C 中Block如何捕獲外部值

    這篇文章主要為大家介紹了詳解Objective C 中Block如何捕獲外部值實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • IOS實(shí)現(xiàn)碎片化動(dòng)畫詳解

    IOS實(shí)現(xiàn)碎片化動(dòng)畫詳解

    在網(wǎng)上看到一個(gè)驚艷的碎片化動(dòng)畫,于是實(shí)現(xiàn)之后拿來講解一下,有需要的小伙伴們可以參考學(xué)習(xí)哦。
    2016-08-08
  • iOS實(shí)現(xiàn)圖片壓縮的兩種方法及圖片壓縮上傳功能

    iOS實(shí)現(xiàn)圖片壓縮的兩種方法及圖片壓縮上傳功能

    ios 圖片壓縮有兩種方法,分別是,壓縮圖片質(zhì)量(Quality),壓縮圖片尺寸(Size),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下
    2017-01-01
  • React Native學(xué)習(xí)教程之Modal控件自定義彈出View詳解

    React Native學(xué)習(xí)教程之Modal控件自定義彈出View詳解

    這篇文章主要給大家介紹了關(guān)于React Native學(xué)習(xí)教程之Modal控件自定義彈出View的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用React Native具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • 使用IOS AirPrint實(shí)現(xiàn)打印功能詳解

    使用IOS AirPrint實(shí)現(xiàn)打印功能詳解

    這篇文章主要介紹了使用IOS AirPrint實(shí)現(xiàn)打印功能詳解,想了解無線打印的同學(xué),一定要看一下
    2021-04-04

最新評(píng)論

云和县| 长泰县| 北海市| 台南县| 建湖县| 堆龙德庆县| 临沭县| 星座| 巩留县| 塘沽区| 泰来县| 沭阳县| 闽清县| 海口市| 吉安县| 屯昌县| 武冈市| 新晃| 北票市| 丰县| 遵化市| 隆尧县| 磴口县| 金寨县| 宁乡县| 阳东县| 即墨市| 车险| 鸡西市| 富蕴县| 海南省| 明水县| 遵义县| 屯门区| 青川县| 高阳县| 象州县| 天水市| 电白县| 张家界市| 阳山县|