Скажем, у меня есть класс Objective-C под названием MyBaseClass и подкласс под названием MySubclassedClass.
MyBaseClass имеет два метода класса:
+ (UIColor *)backgroundColor;
+ (UIImage *)backgroundImage;
Метод backgroundColor вызывает backgroundImage
. Если бы он был ограничен MyBaseClass, мой backgroundColor
метод выглядел бы как
+ (UIColor *)backgroundColor {
UIImage *img = [MyBaseClass backgroundImage];
// irrelevant
return color;
}
Но я хочу иметь возможность создать подкласс MyBaseClass для MySubclassedClass. backgroundColor
не изменится и всегда будет вызывать метод backgroundImage
родителя. В этом сценарии backgroundImage
будет переопределено в каждом подклассе.
Если бы 1backgroundColor1 был методом экземпляра, я бы просто использовал
UIImage *img = [[self class] backgroundImage];
но я не могу использовать «себя», когда это статический метод.
Есть ли еще что-нибудь, что я могу сделать в Objective-C?
virtual
в смысле C ++, а не _2 _... Я думаю, что этот выбор терминологии в C ++ был неудачным. - person Yuji   schedule 27.07.2011