【发布时间】:2016-07-05 05:22:59
【问题描述】:
假设我有一个抽象超类(例如“Shape”)并且它有两个子类(例如“Circle”和“Triangle”)。 Shape 有一个在 Circle 和 Triangle 中被覆盖的类方法。如果我希望任何给定的 Shape 对其自身调用此方法,但在运行时之前我不知道哪个子类将调用该方法,我该如何调用它?例如,
@implementation Shape
+(void)iAmA{
NSLog(@"I'm an abstract method");
}
-(void)identifySelf {
[???? iAmA]; //call relevant subclass's class method
}
@end
和
@implementation Triangle
+(void)iAmA{
NSLog(@"I'm a triangle");
}
@end
@implementation Circle
+(void)iAmA{
NSLog(@"I'm a circle");
}
@end
因此,Shape 子类的实例应该能够调用 identifySelf,并利用它自己的类的 iAmA 方法。在 Swift 中,我会使用 Self 关键字来执行此操作。我如何在 Objective-C 中做到这一点? (谢谢,如果我需要澄清问题,请告诉我)
【问题讨论】:
标签: objective-c oop polymorphism