大家好,
请考虑以下事项:
// Things.h
@interface Things : NSObject
@property (strong, nonatomic) NSSomething * listOfThings;
@end
// Things.m
@implementation Things
// Some methods
@end
// MutableThings.h
@interface MutableThings : Things
- (instancetype) thingsPassingTest;
@end
// MutableThings.m
@implementation MutableThings
- (instancetype)thingsPassingTest
{
// Do some stuff in order to return a subset of Things
return newThings;
}
@end
我希望能够为thingsPassingTest
对象调用Things
,而不是MutableThings
。
有没有办法调用子类方法?
或者我可能走向错误的方向?
答案 0 :(得分:0)
在您的设计中,您的MutableThings继承自Thinks,因此在Things中实现的每个公共属性和方法都可以在MutableThings对象中使用。 您可以在MutableThings类中覆盖thingsPassingTest并返回nil,也许这就是您想要的。 但最好的方法是使用Things和MutableThings类的所有常用方法创建根类。并且只在不在MutableThings中而不在根类中的Things中实现thingsPassingTest。 这是你要求的吗?
答案 1 :(得分:0)
你不能在“Things”对象上调用“thingsPassingTest”,因为“Things”是“MutableThings”的超类。它违反了面向对象编程范例的规则。