2016-03-19 4 views
1

Wie Sie feststellen können, bin ich neu in Java. Ich habe mir ein paar Einführungskurse angeschaut und jetzt bin ich zu verlinkten Listen mit Feldern gekommen, die den gleichen Datentyp wie die Klasse haben. Zum Beispiel dieser Code:Wie heißt es, wenn wir den Datentyp einer Variablen auf den Klassennamen setzen?

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; 
} 
    } 

In der vierten Zeile sagt es private CupNode nächste; Ich weiß über Integer, Double, String etc .. aber ich kam nie mit dem Klassennamen als Datentyp. Ich frage mich, wie es heißt, wenn wir einen Klassennamen als Datentyp verwenden, damit ich nach Tutorials suchen kann, um zu verstehen, was es bedeutet.

Warum können wir nicht auch cupNode als String definieren?

+0

Java ist eine stark typisierte Sprache und eine benutzerdefinierte Klasse kann als Typ fungieren. –

+0

Es gibt viele Namen dafür, abhängig von der Struktur. In diesem Fall könnten wir es wahrscheinlich "** nutzlos **" nennen, da es keinen Setzer oder Getter dafür gibt. Wenn es einen Getter hätte, könnten wir es eine sehr einfache ** verkettete Liste ** nennen, da Sie vom ersten zum letzten Iterieren können, indem Sie 'getNext()' aufrufen, bis Sie null erhalten. In anderen Fällen könnte eine Klasse, die eine oder mehrere Mitglieder als Mitglieder hat, beispielsweise eine ** Eltern-> Kind (ren) ** - Beziehung modellieren. Oder zum Beispiel kann eine "Person" -Klasse ein anderes "Person" -Mitglied haben (zum Beispiel als "Boss", "Nächste Verwandte", usw.etc.). –

+0

in Ihrer Zeile 2: int-Nummer ist auch ähnlich wie Integer-Nummer, wobei Integer auch eine Klasse ist;) – nullpointer

Antwort

3

Dies bedeutet nur, Sie haben Mitglied des Typs CupNode, es unterscheidet sich nicht von int oder String als Mitglied.

Sie können alle Funktionen dieses Mitglieds zugreifen, wie Sie getan haben könnte, wenn eine Instanz in Haupt

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

Und die Getter für next wie

public CupNode getNext() { 
    return next; 
} 
2

In sieht die Schaffung Objektorientierte Programmierung (OOP), ist es alle über das Erstellen von Klassen und Objekten und Herumspielen mit ihnen. Es macht super Spaß! Wie Sie bereits wissen, int, double, float usw. sind Datentypen. Tatsächlich werden sie als primitive Typen klassifiziert. Vielleicht haben Sie auch schon von String gehört. Ob Sie es glauben oder nicht, String ist der Name einer Klasse! Diese "Klassennamenstypen" heißen Referenztypen.

die String für ein Beispiel verwenden lassen:

String a = "Hello"; 

Wenn Sie eine Variable erstellen, die aus einem Referenztyp ist und es mit einem gewissen Wert initialisieren, sind Sie eigentlich eine neue Instanz dieser Klasse zu schaffen. Im obigen Beispiel erstellen Sie eine neue Instanz von String, d. H. Eine neue Zeichenfolge. Diese neue Instanz wird als Objekt bezeichnet. In Ihrem Fall ist Ihre CupNode eine Klasse. Und Sie können eine neue Instanz der es wie folgt erstellen:

CupNode node = new CupNode (0, 20); 

„warten Warten Sie warten Was ist, dass!?“ Du hast geschrien. new CupNode(0, 20) repräsentiert eine neue Instanz von CupNode. Und die zwei Zahlen sind die Parameter, die hier definiert sind:

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

Was können Sie mit einem Objekt tun?

Sie sehen die Methoden, die Sie in der Klasse definiert haben, wie getNumber, getCapacity? Wenn Sie ein Objekt erstellt haben, können Sie diese Methoden mit Ihrem Objekt aufrufen!

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

Objekte sind sehr nützlich in Java. Hier sind weitere Beispiele:

Wenn Sie Benutzereingaben von der Konsole zu übernehmen möchten, können Sie

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

Wenn Sie ein Fenster erstellen möchten,

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

Wenn Sie ein speichern wirklich große ganze Zahl, die long von größer als die max ist

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

Wenn Sie c wollen ein Array reate, die eine dynamische Größe hat:

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

Es gibt nur so viel Material, das Sie mit Klassen tun!

Verwandte Themen