有没有办法让派生类中的方法不覆盖基类方法

时间:2015-03-28 19:34:55

标签: objective-c

我目前正在学习来自c ++背景的Objective-C。我想知道派生类方法是否有一种方法与基类具有相同的签名,以便不覆盖它。 我读到Objective-C中的每个方法都是虚拟的。是否有任何方法可以使派生类不会覆盖基类方法?

我有以下两个类

@interface foo_base : NSObject
-(void) base_method;
-(void) shared_method;
@end


@interface foo_der : foo_base
-(void) der_method;
-(void) shared_method;
@end

当我像这样使用它时

foo_base *b = [[foo_der alloc]init];
[b shared_method]; //Derived class method will be called.

我知道我可以在派生类方法

中做这样的事情
[super  shared_method] //call base class method

1 个答案:

答案 0 :(得分:0)

不,在Objective-C中,如果派生类实现具有相同签名的基类方法,则始终覆盖它。如果你真的想直接访问基类方法,你可以创建一个这样的“帮助器”函数。

- (void) callSuperSharedMethod { 
    [super sharedMethod]; 
}