2012-04-26 6 views
3

継承と継承の違いは何ですか?継承とカテゴリの相違点

どちらもサブクラスで使用されています!どのような違いがあるのですか

+0

[少なくともいくつかあります](http://stackoverflow.com/search?q=%5Bobjc%5D+inheritance+category)既存の質問:http://stackoverflow.com/questions/522341/difference-オブジェクト間の継承とカテゴリ間の継承c、http://stackoverflow.com/questions/9343670/what-is-the-actual-use-of-categories-instead-of-inheritanceとドキュメントこれはあなたのためにこれに答えるでしょう。 –

答えて

4

カテゴリは、新しいクラスをまったく生成せずにクラスに特別な機能を追加します。あなたはそれを拡張するだけですが、それは暗黙的に暗黙的に暗黙指定されているようなものではありません。

継承は、新しいインスタンス変数を追加したり、親子クラスから振る舞いをポリモフィズムで上書きできる新しいクラスを独自に生成します。

+1

また、あるカテゴリでインスタンス変数を追加することはできませんが、サブクラスでは追加することができます。 – jmstone617

8

カテゴリは基本クラスに機能を追加するうえで便利な方法ですが、Flashなどの他のオブジェクト指向技術から来た私のような人は、このことが継承チェーンにどのように関係しているかを理解するのが少し難しいでしょう。同じ質問が私の心に浮かんだので、私はその話題について簡単に研究しました。

カテゴリは最終的にカテゴリと同じことを言います。基本クラスに機能を追加します。あなたがこれを覚えていれば、全く混乱はありません。

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

+1

素敵な説明@Mayank – iSwaroop

+0

大丈夫です。サブクラス化とカテゴリについてはどうですか? –

関連する問題