OStack程序员社区-中国程序员成长平台

标题: iphone - 我可以用 .m 文件中的类的子类覆盖属性的类吗? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 12:04
标题: iphone - 我可以用 .m 文件中的类的子类覆盖属性的类吗?

鉴于我有一个游戏类:

@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-推荐答案


绝对!这就是 Liskov substitution principle是关于。如果您从 Game 正确地继承 CutthroatGame,则将 Game 替换为其子类将没有问题。

关于iphone - 我可以用 .m 文件中的类的子类覆盖属性的类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17355381/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4