gpt4 book ai didi

objective-c - 从父类方法调用子类方法(Objective-c 2.0)

转载 作者:太空狗 更新时间:2023-10-30 03:40:17 32 4
gpt4 key购买 nike

我有面向对象编程的经验,但由于某种原因,这种情况并不熟悉。考虑以下 Objective-c 2.0 代码:

@interface A : NSObject
@end

@implementation A
- (void) f {
[self g];
}
@end

@interface B : A
@end

@implementation B
- (void) g {
NSLog(@"called g...");
}
@end

这是从父类中的方法调用子类方法的正确方法吗?如果另一个子类没有实现方法 g 会怎样?也许有更好的方法来解决这个问题,比如父类 A 中的抽象方法?

最佳答案

关键是在父类中有一个方法可以在子类中被覆盖。

@interface Dog : NSObject
- (void) bark;
@end

@implementation Dog
- (void) bark {
NSLog(@"Ruff!");
}
@end

@interface Chihuahua : Dog
@end

@implementation Chihuahua
- (void) bark {
NSLog(@"Yipe! Yipe! Yipe!");
}
@end

您会看到,您的子类将使用自己的实现覆盖父方法。您可能会看到它是这样使用的:

Dog *someDog = [Chihuahua alloc] init] autorelease];
[someDog bark];

输出:Yipe!哎呀!一佩!

关于objective-c - 从父类方法调用子类方法(Objective-c 2.0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8527343/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com