NSMutableString
から継承しNSString
ますが
継承は「isa」関係として機能します。つまり、猫は「動物」です。しかし、
NSMutableString
「ではない」NSString
。(NSString
変更できない(変更できない)ため)通常、サブクラスが実行することは、基本クラスが実行できる必要があります。魚などは泳げますし、動物も泳げます。しかし、
NSMutableString
変更することはできますが、NSString
まったく変更することはできませNSString
ん。変更できるものはありません。
では、なぜNSMutableString
継承するのNSString
ですか?また、NSMutableArray
から継承しNSArray
ます。NSString
から継承するべきではありませNSMutableArray instead
んが、代わりに「フラグを変更しない」をYESに設定しますか?この背後にある原則は何ですか?
更新:いくつかの答えは言うでしょう:NSMutableString
できることはすべてNSString
できるので、NSMutableString
から継承しNSString
ます。しかし、この原則を使用することはできますか?石はじっとしていることができます。猫はじっとしていることができ、動くことができます。猫は石ができることはすべてできますが、猫を石から継承させることはできませんよね?
2つのゲームオブジェクトクラスがある場合、1つは弾性オブジェクトで、もう1つは非弾性オブジェクトです。弾性オブジェクトを基本クラスとして実装することは理にかなっていると思います。非弾性は、外側の境界を示すフラグを使用して継承します。変えられない。