Objective c类的初始化
Objective c中實(shí)現(xiàn)類(lèi)的初始化要先重載父類(lèi)的init方法:
1.首先調(diào)用[super init]使用父類(lèi)的方法進(jìn)行初始化。將對(duì)象賦給self
2.假設(shè)self不為nil即父類(lèi)初始化成功,接著進(jìn)行本類(lèi)的初始化
3.返回self給調(diào)用者
@implementation Test -(id)init {if(self = [super init]){//本類(lèi)的初始化代碼//.......... }return self;} @end————————————————————————————————————————————————————————————————————————————
虛方法
1.調(diào)用時(shí)不看指針看對(duì)象。稱為虛方法
2.OC中全部的方法都是虛方法
3.父類(lèi)的指針能夠指向子類(lèi)對(duì)象
//父類(lèi)指針指向子類(lèi)對(duì)象,實(shí)際上仍然時(shí)調(diào)用子類(lèi)card2中的打印方法,由于card1指針指向card2對(duì)象
這一點(diǎn)與C++里面也是非常類(lèi)似的,OC中全部的對(duì)象都是通過(guò)指針來(lái)訪問(wèn)的。這些指針對(duì)象擁有編譯時(shí)類(lèi)型和執(zhí)行時(shí)類(lèi)型。
編譯時(shí)類(lèi)型是靜態(tài)類(lèi)型,在編譯階段編譯器僅僅是做簡(jiǎn)單地類(lèi)型檢查,宏替換,導(dǎo)入頭文件等動(dòng)作,與聲明它時(shí)候的定義相關(guān);執(zhí)行時(shí)類(lèi)型是動(dòng)態(tài)類(lèi)型。與它實(shí)際所指向的實(shí)例變量的類(lèi)型有關(guān),程序執(zhí)行時(shí)才知道的類(lèi)型。
編譯器在編譯階段時(shí)會(huì)進(jìn)行語(yǔ)法檢查,因此盡管當(dāng)父類(lèi)指針指向子類(lèi)的對(duì)象時(shí),父類(lèi)的.h聲明文件里未聲明的方法均不能直接調(diào)用。僅僅能通過(guò)OC的反射機(jī)制來(lái)訪問(wèn)。如通過(guò)performSelector:@selector(SEL)來(lái)訪問(wèn),但編譯器此時(shí)還是會(huì)有警告的。此時(shí)調(diào)用運(yùn)行的均為子類(lèi)的方法。當(dāng)且僅當(dāng)這種方法在子類(lèi)中沒(méi)有實(shí)現(xiàn)時(shí)才會(huì)調(diào)用父類(lèi)自己的方法。
?
轉(zhuǎn)載于:https://www.cnblogs.com/jzdwajue/p/7170612.html
總結(jié)
以上是生活随笔為你收集整理的Objective c类的初始化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 集成对接项目的经验
- 下一篇: machine learning学习笔记