0
假設我有一個抽象超類(例如'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中做到這一點? (謝謝,請讓我知道如果我需要澄清問題)