如何调用子类'从父类实现的方法?

时间:2015-11-11 21:44:29

标签: objective-c oop

在Objective-C中,假设您有课程Parent

@interface Parent : NSObject
@end

@implementation

+ (void)load {
  NSLog(@"class: %@", NSStringFromClass([self class]);
}

@end

和班级Child

@interface Child : Parent
@end

如何在+[Child load]被调用时将其设为Child而不是名称Parent?如果我不必在+ (void)load的每个子类上重写Parent,我更喜欢。

1 个答案:

答案 0 :(得分:1)

load是一种现有方法(https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/#//apple_ref/occ/clm/NSObject/load)。

假设我们有以下类:

@interface Parent : NSObject
+ (void)logClassName;
@end

@implementation Parent
+ (void)logClassName {
  NSLog(@"class: %@", NSStringFromClass(self));
}
@end

@interface Child : Parent
@end

现在我调用logClassName类方法......

[Parent logClassName];
[Child logClassName];

我得到以下输出 - 如果我说得对 - 正是你想要的:

2015-11-11 22:56:19.029 OOP [676:11008]课程:家长 2015-11-11 22:56:19.030 OOP [676:11008]课程:孩子