3

Objective-cの継承とカテゴリの違いは何ですか

どちらもサブクラスに使用されます!だからそれらの違いは何ですか

4

2 に答える 2

8

カテゴリは基本クラスに機能を追加するための優れた方法ですが、Flash などの他のオブジェクト指向テクノロジから来た私のような人々は、これが継承チェーンとどのように関係しているかを理解するのが少し難しいと感じるでしょう。同じ質問が頭に浮かび、そのトピックについて簡単に調査しました。

最後に、Category は自身について語っているのと同じことを行います。基本クラスに機能を追加します。これさえ覚えておけば迷うことはありません。

それを理解するために、例を挙げましょう。クラス A があり、クラス B がクラス A のサブクラスであるとします。アプリケーションでは、クラス B は多くの場所で使用されます。ここで、クラス A にさらに機能を追加する必要があるため、新しいカテゴリは「A+newRole」と記述されます。このカテゴリが書き込まれると、新しい機能が基本クラス (この場合はクラス A) に追加されます。つまり、クラス B などのクラス A の子クラスであるすべてのクラスは、自動的に機能を取得します。それはめちゃくちゃクールです。すぐに先に進み、子クラスからカテゴリに追加された新しいメソッドを呼び出すことができます。ここで必要なのは、カテゴリ ファイルを適切な場所にインポートすることだけです。

于 2012-04-26T18:44:46.170 に答える
4

カテゴリは、新しいクラスをまったく生成せずにクラスに追加の機能を追加します。拡張するだけで、ポリモーフィズムが暗示されたり、そのようなものはありません。

一方、継承はそれ自体で新しいクラスを生成し、新しいインスタンス変数を追加して、ポリモーフィズムによって親クラスの動作をオーバーライドできます。

于 2012-04-26T18:41:17.453 に答える