菜鸟教程小白 发表于 2022-12-12 12:04:35

iphone - 我可以用 .m 文件中的类的子类覆盖属性的类吗?


                                            <p><p>鉴于我有一个游戏类:</p>

<pre><code>@interface Game : NSObject
</code></pre>

<p>带有 CutthroatGame 子类:</p>

<pre><code>@interface CutthroatGame : Game
</code></pre>

<p>如果我的 ViewController .h 文件中有这样的属性:</p>

<pre><code>@property (strong) Game *game;
</code></pre>

<p>我可以在我的 ViewController .m 文件中安全地覆盖这样的属性吗:</p>

<pre><code>if (_playerCount == 3) {
    _game = [ init];
else {
    _game = [ init];   
}
</code></pre>

<p>编辑:如果这应该有效,我该如何处理以下错误?</p>

<p>CutthroatGame 定义了许多附加属性,例如:</p>

<pre><code>@property (strong) Player *opponent2
</code></pre>

<p>当我尝试使用 ViewController 的 _game 属性访问它们时,我收到以下错误:</p>

<pre><code> _game.opponent2 = ; -- ERROR: Property &#39;opponent2&#39; was not found on object of type &#39;Game *&#39;
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>绝对!这就是 <a href="http://en.wikipedia.org/wiki/Liskov_substitution_principle" rel="noreferrer noopener nofollow"><em>Liskov substitution principle</em></a>是关于。如果您从 <code>Game</code> 正确地继承 <code>CutthroatGame</code>,则将 <code>Game</code> 替换为其子类将没有问题。</p></p>
                                   
                                                <p style="font-size: 20px;">关于iphone - 我可以用 .m 文件中的类的子类覆盖属性的类吗?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/17355381/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/17355381/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iphone - 我可以用 .m 文件中的类的子类覆盖属性的类吗?