繼承的好處
解決問題: 重復(fù)代碼太多
可以利用繼承來解決當(dāng)前重復(fù)代碼太多的問題
只要A類繼承了B類, 那么A類就擁有了B類的所有屬性和方法(對象方法和類方法)
例如:
@interface Iphone : NSObject
其實(shí)在類名的后面加上: NSObject, 就是讓當(dāng)前類繼承NSObject類
new方法就是繼承過來的類方法
isa指針是從NSObject中繼承過來的成員變量
繼承的語法 @interface 類名 : 需要繼承的類
其他注意點(diǎn):重寫父類的屬性和方法
注意: 1裂问、在繼承中方法可以重寫, 但是屬性(成員變量)不能重寫,會編譯錯誤報(bào)重復(fù)定義屬性(因?yàn)槔^承屬性是直接拷貝到子類的)
如果子類中有和父類中同名的方法, 那么我們稱之為方法重寫
注意: 2驶睦、繼承中的方法調(diào)用順序, 如果自己有就調(diào)用自己的, 如果自己沒有就調(diào)用父類的
3掏愁、方法的調(diào)用順序, 先自己再父類, 如果父類中沒有再爺爺類, 如果爺爺類再沒有就找爺爺?shù)陌职诸?br>
如果一直找到NSObject類都沒有找到, 那么就會報(bào)錯
reason: '-[Iphone signalWithNumber:]: unrecognized selector sent to instance 0x1003043c0'
總結(jié)
繼承:
當(dāng)B類繼承A類, 那么B類就擁有A類所有的屬性和方法(類方法/對象方法)
優(yōu)點(diǎn):
提高代碼的復(fù)用性
可以讓類與類之間產(chǎn)生關(guān)系, 正是因?yàn)槔^承讓類與類之間產(chǎn)生了關(guān)系所以才有了多態(tài)
注意:
不要以為繼承可以提高代碼的復(fù)用性, 以后但凡發(fā)現(xiàn)多個類當(dāng)中有重復(fù)代碼就抽取一個父類
只要滿足一定的條件我們才能使用繼承
條件: XXXX 是 XXX / 某某某 is a 某某某
缺點(diǎn):
耦合性太強(qiáng)(依賴性太強(qiáng)),子類太依賴父類