0
抽象スーパークラス(「シェイプ」など)を持ち、2つのサブクラス(「サークル」や「トライアングル」など)があるとします。 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
だから、シェイプサブクラスのインスタンスは、identifySelfを呼び出し、それ自身のクラスのIAMAメソッドを利用することができるはずです。 Swiftでは、私はSelfキーワードでこれを行います。どのようにObjective-Cでこれを行うことができますか? (ありがとう、問題を明確にする必要がある場合はお知らせください)