1

次の例を考えてみましょう

public class Human
{
public Human h1;
public String name;
public int age;

public Human()
{
  name = "myName";
      age = 22;
}
}

そこに h1 があることのポイントは何ですか? どのように使用できますか?なぜそれが使用されるのですか?new で作成したインスタンスをそのまま使用することはできませんか?

4

4 に答える 4

5

そこに h1 があることのポイントは何ですか?

それは完全にクラスに依存します。

どのように使用できますか?

他のインスタンス メンバーと同様です。

なぜそれが使用されるのですか?new で作成したインスタンスをそのまま使用することはできませんか?

各ノードが次の (場合によっては前の) ノードへのリンクを持つリンク リストを考えてみましょう。これらのリンクは、ノード自体と同じクラスになります。たとえば、おおよそ次のとおりです。

class LinkedListNode {
    private LinkedListNode previous;
    private LinkedListNode next;
    private Object value;

    LinkedListNode(LinkedListNode p, LinkedListNode n, Object v) {
        this.previous = p;
        this.next = n;
        this.value = v;
    }

    LinkedListNode getPrevious() {
        return this.previous;
    }

    // ...and so on...
}

他にも同様の使用例がたくさんあります。Personクラスには、関係者 (配偶者、子供) のメンバーが含まれる場合があります。ツリー クラスにはおそらく葉があり、それはおそらく他の葉へのリンクを持っているでしょう。等。


コメントで、シングルトン クラスについて質問しました。はい、それは絶対に、クラスの型であるメンバーを持つケースです。これは標準的なシングルトンです (このテーマには多くのバリエーションがあります):

class Foo {
    // The singleton instance
    static Foo theInstance = null;

    // Private constructor
    private Foo() {
    }

    // Public accessor for the one instance
    public static synchronized Foo getInstance() {
        if (theInstance == null) {
            theInstance = new Foo();
        }
        return theInstance;
    }

    // ...stuff for Foo to do, usually instance methods...
}
于 2013-09-22T09:32:44.333 に答える
2
  • リンクされたリスト、ツリー、またはその他の形式のオブジェクト関連付けを手動で構築する場合、そのようなフィールドには、、、、、、、 ...という名前prevを付けることができます。nextparentchildfirstChildlastChildprevSiblingnextSibling
  • 同じタイプ (再帰) または異なるタイプの親子関係は、たとえば、(通常) 同じインスタンス (this) を指すだけではない JPA エンティティでモデル化されます。
  • 同じタイプの静的フィールドは、シングルトン インスタンスまたは何らかの事前定義された最終値に使用できます。
于 2013-09-22T09:34:27.377 に答える
2

例の 1 つ。構造のようなツリーがある場合、ノードには独自のタイプの子を含めることができます。これが、Humanクラスが独自の型の属性を持つ理由です。

于 2013-09-22T09:32:41.303 に答える
1

リンクされたリスト、ツリーなどのデータ構造をJavaで実装するために、クラスと同じタイプのフィールドを持つことは非常に一般的です。

これは基本的に、C でこの目的のために使用されるポインターと同じです。

Javaで作成されたすべてのオブジェクトは、実際にはヒープ内のオブジェクトの実際の場所への「参照」であるため、ポインターがCにあるように表示できます。

次のようなもの:
struct List{ int val; List *next; }


Javaでは次のようになります:
class MyList{ int val; MyList nextNode; }

于 2013-09-22T12:05:42.557 に答える