[英]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.