2016-03-19 9 views
1

私はjavaを使い慣れていると言えるでしょう。私は入門コースをいくつか見ていましたが、クラスと同じデータ型のフィールドを持つリンクリストを作成しました。たとえば、次のコードのようになります。変数のデータ型をクラス名と同じにするときは、どう呼ばれますか?

public class CupNode { 
private int number; 
private int capacity; 
private CupNode next; 

public CupNode(int number, int capacity) { 
    this.number = number; 
    this.capacity = capacity; 
    this.next=null; 
} 

public int getNumber() { 
    return number; 
} 

public void setNumber(int number) { 
    this.number = number; 
} 

public int getCapacity() { 
    return capacity; 
} 

public void setCapacity(int capacity) { 
    this.capacity = capacity; 
} 
    } 

4番目の行にプライベートCupNodeと表示されます。 私は整数、倍精度、文字列などについて知っていますが、データ型としてクラス名を使用することはありません。そこで私はクラス名をデータ型として使うときに何が呼び出されるのだろうと思っていますので、チュートリアルを検索してその意味を理解することができます。

またcupNodeを文字列として定義できないのはなぜですか?

+0

Javaは厳密に型指定された言語であり、ユーザー定義クラスは型として動作できます。 –

+0

構造に応じて、多くの名前があります。この場合、セッターやゲッタがないので、おそらく "**役に立たない**"と呼ぶことができます。 getterを持っていれば、getNext()を呼び出すことで最初から最後まで繰り返すことができるので、getterを非常に基本的な**リンクリスト**と呼ぶことができます。他のケースでは、メンバーとして1つまたは複数のメンバーを持つクラスは、たとえば、** parent-> child(ren)**の関係をモデル化できます。例えば、 'Person'クラスは別の' Person'メンバーを持つかもしれません(例えば、 "Boss"、 "Next of kin"など)。 –

+0

の 'line 2:int number'もInteger numberと似ていますが、Integerもクラスです; – nullpointer

答えて

3

これは、タイプがCupNodeであり、メンバーとしてintまたはStringを持っていることと異ならないことを意味します。

インスタンスを作成するときに、メイン

CupNode cup = new CupNode(2, 2); 
cup.getNumber(); // call getNumber() in cup 
cup.getNext().getNumber(); // call getNumber() in next member in cup 

に行っている可能性があり、nextためのゲッターはオブジェクト指向では

public CupNode getNext() { 
    return next; 
} 
2

ようになりますようあなたがこのメンバーのすべての機能にアクセスすることができますプログラミング(OOP)、それはすべてクラスとオブジェクトを作成し、それらをめちゃくちゃにすることについてです。それは超楽しいです!

ご存じのように、int,double,floatなどはデータ型です。実際には、プリミティブタイプに分類されます。 Stringについて聞いたこともあります。それを信じるかどうか、Stringはクラスの名前です!これらの「クラス名タイプ」は参照タイプと呼ばれます。

はのは、例えばStringを使用してみましょう:あなたが参照型である変数を作成し、いくつかの値で初期化すると

String a = "Hello"; 

、あなたが実際にそのクラスの新しいインスタンスを作成しています。上記の例では、Stringの新しいインスタンス、つまり新しい文字列を作成しています。この新しいインスタンスはオブジェクトと呼ばれます。

あなたの場合、CupNodeはクラスです。そして、あなたはこのようにそれの新しいインスタンスを作成することができます。

CupNode node = new CupNode (0, 20); 

「待って待って待ってことは何!?」あなたは叫んだ。 new CupNode(0, 20)は、CupNodeの新しいインスタンスを表します。 2つの数値がここに定義されているパラメータです。

public CupNode(int number, int capacity) { // <--- here 
    this.number = number; 
    this.capacity = capacity; 
    this.next=null; 
} 

オブジェクトでできることはありますか?

getNumber,getCapacityのように、クラスで定義したメソッドが表示されますか。オブジェクトを作成したら、それらのメソッドをオブジェクトで呼び出すことができます。

System.out.println(node.getNumber()); 

オブジェクトは、Javaで非常に有用です。ここではより多くの例は以下のとおりです。

は、コンソールからユーザーの入力を受け付けるようにしたいときは、することができます

Scanner sc = new Scanner(System.in); // System.in represents the console's input stream 
String input = sc.nextLine(); 

ウィンドウを作成したい、あなたが保存したい

JFrame frame = new JFrame(); 
frame.setVisible(true); 

long

BigInteger myInt = new BigInteger("9.9999e99"); 

本当に大きな整数です。動的サイズの配列を返します。

ArrayList<String> list = new ArrayList<>(); 
list.add("Hello"); 

クラスでできることはたくさんあります。

関連する問題