簡體   English   中英

覆蓋子類中未聲明的方法

[英]overriding undeclared methods in subclass

我有一個類,其中某些方法既未在.h文件中聲明,也未在任何類別中聲明,我想在子類中覆蓋這些方法以略微改變行為。 我正在考慮簡單地在子類中重新定義這些方法。 這是個好主意嗎? 還能行嗎?

編譯器允許它“工作”。 定義這些方法的類可能會假設它們在被調用時做特定的事情,您的實現在重寫它們時需要注意這些事情,以避免在使用類接口時引入錯誤。

您可以在基類中重寫私有方法,但是問題是您不能調用[super someMethod] 如果您希望完全替換原始方法,那么這不是問題。

否則,您需要讓派生類了解父類中的方法。

理想情況下,如果子類想要覆蓋方法並仍然調用super,則需要知道方法是什么。

一種方法是通過擁有一個單獨的頭文件,超類和子類實現都導入該文件。

// MyClass_protected.h

- (void)someMethodThatYouWantSubclassesToBeAbleToOverride;

然后

// MyClass.m

#import "MyClass_protected.h"

// MySubClass.m

#import "MyClass_protected.h"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM