鉴于我有一个游戏类:
@interface Game : NSObject
带有 CutthroatGame 子类:
@interface CutthroatGame : Game
如果我的 ViewController .h 文件中有这样的属性:
@property (strong) Game *game;
我可以在我的 ViewController .m 文件中安全地覆盖这样的属性吗:
if (_playerCount == 3) {
_game = [[CutthroatGame alloc] init];
else {
_game = [[Game alloc] init];
}
编辑:如果这应该有效,我该如何处理以下错误?
CutthroatGame 定义了许多附加属性,例如:
@property (strong) Player *opponent2
当我尝试使用 ViewController 的 _game 属性访问它们时,我收到以下错误:
_game.opponent2 = [players objectAtIndex:0]; -- ERROR: Property 'opponent2' was not found on object of type 'Game *'
Best Answer-推荐答案 strong>
绝对!这就是 Liskov substitution principle是关于。如果您从 Game 正确地继承 CutthroatGame ,则将 Game 替换为其子类将没有问题。
关于iphone - 我可以用 .m 文件中的类的子类覆盖属性的类吗?,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/17355381/
|