【发布时间】:2011-11-22 20:31:16
【问题描述】:
我有两个类,分别命名为Parent 和Child,如下所示。 Parent 是Child 的超类我可以使用关键字super 从其子类中调用超类的方法。是否可以从超类调用子类的方法?
Child.h
#import <Foundation/Foundation.h>
#import "Parent.h"
@interface Child : Parent {
}
- (void) methodOfChild;
@end
Child.m
#import "Child.h"
@implementation Child
- (void) methodOfChild {
NSLog(@"I'm child");
}
@end
Parent.h:
#import <Foundation/Foundation.h>
@interface Parent : NSObject {
}
- (void) methodOfParent;
@end
Parent.m:
#import "Parent.h"
@implementation Parent
- (void) methodOfParent {
//How to call Child's methodOfChild here?
}
@end
在应用代理的 .m 文件头中导入“Parent.h”。
应用代理的application:didFinishLaunchingWithOptions: 方法..
Parent *parent = [ [Parent alloc] init];
[parent methodOfParent];
[parent release];
【问题讨论】:
-
是的,这在技术上是可行的,但这种设计有异味。特别糟糕。超类不应该知道它们的子类。
-
我想在从 swift 调用时实现相同的功能,swift 无法识别这种层次结构中的方法。当第一次从 swift 类初始化调用时,谁能告诉如何实现相同的目标?
标签: objective-c inheritance subclass superclass