2012-02-26 5 views
0

ここではを検索しました。私は検索しましたが、私がしようとしていることの正確な用語を知らないのですか?既に尋ねられているなら私を攻撃しないでください。私に正しい方向を向けると、私は読むでしょう。Objective-C、ivarsをサブクラスとメソッドに適切に継承することに問題がある

I、クラスを有する:(NSObjectのうち)
"形状" "形状" の
サブクラスは:
"円" など - それぞれの石灰沈着(面積計算)の方法とそれぞれ。

私のサブクラスは、個人がアイバーズ「形状」で(使用して「形」メソッドを設定し、それらを継承し、それらを使用して面積を計算するために、クラス「サークル」を取得して素晴らしい仕事

私が何をしたいのか:。 私は "Shape"オブジェクトのパラメータを設定できるようにしたいので、これらのパラメータを2つのパラメータを入力できるように、それぞれのサブクラス( "Circle"、 "Triangle"など)私のすべての私の領域と各サブクラスからの円周計算。サブクラスメソッドのそれぞれは、例えば、同じ "calcArea"と同じです。理論:
-Bruteは、メインメソッドで2つの変数を使って各サブクラスの各パラメータをリセットします。 これは本当に非効率なようですが、動作します。

- "id"を使用すると、基本的にこのオブジェクトは各サブクラスを通じて "Shape"のパラメータを作成し、すべてのサブクラスが終了するまでループします。何かを試して、それを把握することはできません。

"Shape"のオブジェクトを作成して、そのサブクラスの各機能を実行します。これは私が読んだものから悪いと思うので、スーパークラスはそのサブクラスのことを知りません。 [myCircle calcArea]と[myTriangle calcArea]を実行する "Shape"では?

- 私はこのプログラムを間違って設計しています。


ご協力いただきありがとうございます。

答えて

1

私はあなたを正しく理解しています。 OOPでは、サブクラスはスーパークラスのすべての属性を継承します。あなたが持っているとき:

@interface Shape : NSObject { 
    int _mParam; 
} 
-(int) calcArea; 
@end 

あなたは実際にあなたのサブクラスで_mParamにアクセスすることができます。次に、サブクラスを作成します。

+0

私はあなたを正しく理解しているので、スーパークラスでメソッドを作成してから、スーパークラスで実際に定義して開始することができます。 - それは私には完璧な意味を持っていますが、このインスタンスではIDはどのように機能しますか? "param"を変数として正しいクラスを開始しているようですか?どのようにそれを主な機能でコード化すべきですか? – thattookawhile

+0

idはオブジェクトの内部構造へのポインタです。あなたはidについて何も心配するべきではありません - それはランタイムシステムによって内部的に使用されます。 – Max

+0

どのような主な機能ですか? – Max

関連する問題