2016-10-27 12 views
0

私は好奇心が強いので、Java &にはかなり新しく、クラス名を使って変数が宣言されました。私は間違いがない!なぜそうなの?変数を宣言するために使用されるクラス名で何ができますか?私はいくつかのことを試みましたが、どれもうまくいかないようです。クラス変数がクラス名と同じjava

私のコード全体でn変数を使用することができる人の簡単な説明や例を教えていただけますか?これはnooby質問:)

import java.util.*; 

public class hello { 
public hello n; 

public static void main(String[] args) { 



} 

} 
+0

は、それはちょうどです'hello'という名前の自己参照フィールドの名前は' n'です。 – Li357

+0

こんにちはAndrew、私はあなたのドリフトをかなりキャッチしません。あなたが気にしないなら、もう少し意味を広げることができますか? – pellepelle

+0

'hello'型の' n'という名前のフィールドを作成しました。新しい 'hello'オブジェクトを作成することができ、' hello'オブジェクトの中に別の 'hello'オブジェクトを設定することができます。 – Rogue

答えて

0

クラス名を使用して変数を作成している場合

おかげで、申し訳ありませんが、オブジェクトと呼ばれます。

hello n = new hello(); 

これは、メソッド、クラスのメンバーを呼び出すために使用できます。

n.someMethod(); 
+0

私はhello n = new hello()について知っています。それは...公共の外人と同じですか?メインの外側ですか? – pellepelle

+0

良い、あなたはクラスの変数とメソッドにアクセスするためにそのオブジェクトを使用することができます。静的メソッドの非静的メソッドと同様 – Sanjeet

0

変数には名前と型を付けることができます。タイプは、プリミティブタイプまたはユーザ定義タイプとすることができる。あなたが宣言したもの

public hello n; 

は、ユーザー定義型helloの変数です。 Javaでは、クラスを作成することで独自の型を作成することができます(adtなどのいくつかの前進があります)が、基本的な方法はクラスを使用しています。ここで、ユーザー定義型の変数を作成することを、そのクラスのオブジェクトの作成と呼びます。オブジェクトを作成したら、そのオブジェクトをクラスにリストすることで、必要な機能をすべて与えることができます。 クラス内に同じクラスのオブジェクトを作成すると、hello自体の「hello」型のインスタンスであったことになります。このものは、linkedlistのようなデータ構造を作成する際にはより便利です。例えば、LinkedListので 、あなたはハローnに行ったよう

public class LinkedNode<E> { 
    <E> data; 
    LinkedNode next; 
} 

を参照してください、私はちょうど作成したのと同じものとしてのLinkedListのノードを定義することができます。ここでは、LinkedNode型のオブジェクトは、データと次のノードへの参照という2つのものを持つ必要があると言っています。 同じコードの場合、型helloのフィールドを作成します。型helloのインスタンスにはhelloオブジェクトが必要です。 メソッドやその他の機能をクラスに追加することもできます。自己参照クラスの

1

一の非常に一般的な例は、LinkedListNodeである:

public class Node<E> { 

    E value; 
    Node<E> previous; 
    Node<E> next; 

} 

Node参照LinkedListのリスト構造を形成する2つの他のノード。参照先ノードがnullの場合、リストは終了します。

この種の構造は非常に強力で、ツリーやグラフなどのデータ構造やオブジェクト間の関係など、多種多様な状況で使用することができます。PersonにはList<Person>その人の友達。

1

すべてのクラスを宣言し、そのインスタンスを同じクラス内または他のクラスの外部に作成できます(クラスアクセス修飾子の影響を受けます)。そして、クラスHelloの機能を利用できるので、Helloの変数nを宣言する理由があります。

あなたがリストをリンクされたデータ構造を実装するように同じクラス自体にクラスのインスタンスを作成しなければならないとして、キューなどが例えば

ありますリンクリストの実装

private class Node { 
     // reference to the next node in the chain, or null if there isn't one. 
     Node next; 

     // data carried by this node. could be of any type you need. 
     Object data; 

     // Node constructor 
     public Node(Object dataValue) { 
      next = null; 
      data = dataValue; 
     } 
} 
関連する問題