Objektuster in Java

Objektuster in Java
In Java ist ein Objekt die Instanz einer Klasse, oder es ist ein Array. Es gibt eine Klasse genannt, Objekt. Dieses Objekt sollte nicht mit einem Objekt verwechselt werden, das die Instanz einer Klasse ist. "Objekt", beginnend mit Großbuchstaben 'O', ist der Name einer Klasse, eine spezielle Klasse. In Java ist der oberste Vorfahren aller Klassen diese Klasse, Objekt. Das Objekt kann in eine Klasse, Objekt (optional benannt, mit Kleinbuchstaben 'O') instanziiert werden. Es ist jedoch nicht erforderlich, die spezielle Klasse, das Objekt zu instanziieren. Alle Klassen, die vordefinierte oder Programmierer definierte Klassen sind, werden von dieser Klasse, Objekt, vererbt.

Die Objektklasse hat eine Methode genannt, toString (). Diese Methode gibt eine String -Darstellung des Objekts einer normalen Klasse zurück. Alle Klassen erben diese Methode vom Klassenobjekt. Jedes Array (als Objekt) hat eine ähnliche Methode.

Leider ist diese Zeichenfolgendarstellung des Objekts ein kurzer Textcode (kurzer Zeichenfolge -Literaltext). Es ist nicht sehr nützlich, obwohl es dekodiert werden kann. Eine solche Dekodierung wird in diesem Artikel nicht behandelt. Und so muss der Programmierer diese Methode überschreiben, um eine Darstellung des Objekts zu haben. Der Computerbenutzer wird das zu schätzen wissen. Das Überschreiben wird in diesem Artikel behandelt.

Standardverhalten der Methode toString ()

Primitive Typen

Primitive Typen wie das int existieren in ihrem eigenen Recht. Jeder primitive Typ in Java hat jedoch eine entsprechende Klasse (Wrapper). Wenn es darum geht, primitive Objekte in Zeichenfolgen umzuwandeln, sollten die entsprechenden Klassen verwendet werden, die verwendet werden sollten. Das folgende Programm zeigt dies für die int. Die entsprechende Klasse für int ist die Ganzzahlklasse.

öffentliche Klasse Theclass
public static void main (String [] args)
Ganzzahl in = 5;
String str = in.toString ();
System.aus.println (str);

Der Ausgang ist 5. Wenn „Integer“ als int tippt worden wäre, wäre eine Fehlermeldung zum Kompilierungszeiten ausgegeben worden. Die Methode der ToString () der größten Vorfahren wurde hier ohne Probleme verwendet. Das heißt, die Ganzzahl, 5 wurde in eine Zeichenfolge umgewandelt und ohne Probleme gedruckt. Wenn die Klasse jedoch eine Programmierer-definierte Klasse oder eine andere Art von vordefinierter Klasse wäre, hätte es ein Problem gegeben.

Programmierer definierte Klasse

Betrachten Sie das folgende Programm, das die Darstellung des von Programmierer definierten Objekts OBJ ausdruckt:

Klasse aclass
int prop1 = 1;
int prop2 = 2;
void mthd ()
System.aus.println ("gesehen");


öffentliche Klasse Theclass
public static void main (String [] args)
ACLASS OBJ = New Aclass ();
String str = obj.toString ();
System.aus.println (str);

Die Ausgabe ist:

ACLASS@6ff3c5b5

Dies ist ein kurz codierter Text - nicht sehr nützlich für den Benutzer. Der Benutzer hat möglicherweise etwas vorgezogen wie:

prop1 => 1;
prop2 => 2;

Dies sind die verschiedenen Eigenschaften (Felder) und ihre Werte. Was eine Eigenschaft von ihrem Wert im Ausdruck unterscheidet, lautet "=>", der vom Programmierer eingeführt werden sollte. In einer solchen Frage werden die Methoden normalerweise nicht gedruckt.

Array

Betrachten Sie das folgende Programm, in dem das Array als Objekt arr gedruckt werden sollte:

öffentliche Klasse Theclass
public static void main (String [] args)
String [] arr = new String [] "eins", "zwei", "drei";
String str = arr.toString ();
System.aus.println (str);

Die Ausgabe ist,

[Ljava.Lang.String;@D716361

Welches ist ein weiterer Textcode. Ist es das was du wolltest? Sie hätten gerne so etwas gesehen:

eins zwei drei

wo das Element -Separator "," ist.

Aufführen

Betrachten Sie das folgende Programm, in dem eine ArrayList als Objekt, AL, gedruckt werden sollte:

Java importieren.Util.*;
öffentliche Klasse Theclass
public static void main (String [] args)
ArrayList al = new ArrayList ();
al.füge eins hinzu"); al.add ("zwei"); al.add ("drei");
String str = al.toString ();
System.aus.println (str);

Die Ausgabe ist:

[eins zwei drei]

Die Ausgabe ist ziemlich gut! Dies bedeutet, dass der Programmierer das Objekt nicht überschreiben muss.Methode toString () Wenn sie die ArrayList (oder mögliche Liste im Allgemeinen) betrifft. Wenn es jedoch um Programmierer-definierte Objekte oder das Array geht, muss der Programmierer die Methode überschreiben.

Karte

Betrachten Sie das folgende Programm, wobei ein HashMap als Objekt HM gedruckt werden sollte:

Java importieren.Util.*;
öffentliche Klasse Theclass
public static void main (String [] args)
HashMap hm = new HashMap ();
Hm.put ("eins", 1); Hm.put ("zwei", 2); Hm.put ("drei", 3);
String str = hm.toString ();
System.aus.println (str);

Die Ausgabe ist:

ein = 1, zwei = 2, drei = 3

Die Ausgabe ist ziemlich gut! Die Schlüssel-/Wertpaare sind unterscheidbar, wobei das Element -Separator ",", "," ",", ". Dies bedeutet, dass der Programmierer das Objekt nicht überschreiben muss.toString () Methode, wenn sie die HashMap (oder mögliche Karte im Allgemeinen) betrifft. Wenn es jedoch um Programmierer-definierte Objekte oder das Array geht, muss der Programmierer die Methode überschreiben.

Der Rest dieses Artikels befasst sich mit der Überschreibung des Objekts.toString () erbte Methode des Programmierers definiert und des Arrays.

Übergeordnetes ToString ()

Array

Mit dem Array ist die Überschreibung heute indirekt oder umgehängt. Java hat eine Klasse namens Arrays. Diese Klasse hat die TOString -Methode, die bereits von Java überschrieben wurde. In der Klasse ist die Methode toString () statisch: Dies bedeutet, dass die Arrays -Klasse nicht so instanziiert werden muss. Hier nimmt die Methode toString () ein Argument an, das die Kennung des Arrays ist. Es erzeugt eine Ausgabe, bei der das Trennzeichen "," ist. Klassenarrays sind in der Java.Util.* Paket. Das folgende Programm zeigt die Problemumgehung für Arrays:

Java importieren.Util.*;
öffentliche Klasse Theclass
public static void main (String [] args)
double [] arr = new Double [] 10.1, 20.2, 30.3;
String str = Arrays.tostring (arr);
System.aus.println (str);

Die Ausgabe ist:

[10.1, 20.2, 30.3]

Die Ausgabe ist ziemlich gut! Und so muss der Programmierer heute keine übergeordnete Methode für die Methode toString () für Java -Array codieren. Der Programmierer macht eine Problemumgehung mit Arrays und seinem ToString ().

Programmierer definiertes Objekt

Bei der definierten Programmierer -Klasse muss die Methode toString () der Objektklasse nur neu definiert werden, wie in der folgenden Programmierer definierte Klasse dargestellt:

Klasse aclass
int prop1 = 1;
int prop2 = 2;
void mthd ()
System.aus.println ("gesehen");

@Override
public String toString ()
String str1 = "prop1 =>" + this.Prop1;
String str2 = "prop2 =>" + this.prop2;
return str1 + '\ n' + str2;

Die Technik besteht darin, den String-Verkettungsoperator zu verwenden, um Nicht-String-Literalen mit String-Literalen zu verbinden. Das vorhergehende "@Override" verhindert bestimmte Fehler in der überschriebenen Methode. Die Neudefinition hier ist überschreibend. Eine von Programmiererin definierte Klasse entspricht dem Programmierer-definiertem Objekt. Die folgende Java main () -Methode ist für die obige Klasse geeignet:

öffentliche Klasse Theclass
public static void main (String [] args)
ACLASS OBJ = New Aclass ();
String str = obj.toString ();
System.aus.println (str);

Die Ausgabe ist:

prop1 => 1
prop2 => 2

Diese Ausgabe wird vom Benutzer besser geschätzt als der kurze Textcode, "ACLASS@6ff3C5B5". Vergessen Sie nicht, dass die übergeordnete Definition in der Klasse von Interesse stattfindet.

Abschluss

Die Objektklasse hat eine Methode genannt, toString (). Diese Methode gibt eine String -Darstellung des Objekts einer Klasse zurück. Alle Klassen erben diese Methode vom Klassenobjekt. Jedes Array (als Objekt) hat eine ähnliche Methode. Jede Klasse muss diese Methode indirekt oder direkt überschreiben.

Verwenden Sie mit primitiven Typen die Referenztypen (e.G., Ganzzahl für int), wobei Java bereits über eine vordefinierte übertragete Methode toString () verfügt, die zufriedenstellend ist. Auch bei Listen und Karten hat Java bereits eine vordefinierte Overdiden toString () -Methode, die zufriedenstellend ist. Machen Sie mit einem Array eine Problemumgehung: Verwenden Sie die Methode toString () der Arrays -Klasse. Führen Sie mit der Programmierer-definierten Klasse das tatsächliche Überschreiben mit dem String-Verkettungsoperator +so oft wie möglich durch.