[Java] Implizites Vererbungsprotokoll

Objektklasse

Die Object-Klasse ist der Vorfahr jeder Klasse. Es wurde geerbt. Es hat die folgenden Methoden.

--equals () : Überprüfen Sie, ob eine Instanz mit Ihrer eigenen identisch ist. --toString () : Gibt eine Zeichenfolgendarstellung Ihres eigenen Inhalts zurück.

Mit der Object-Klasse ist es möglich, mithilfe von Polymorphismus eine "Methode zu erstellen, die eine Instanz von einem beliebigen Typ übergeben kann" und eine "Methode zu definieren, die mindestens alle Klassen haben möchten".

So etwas wie "System.out.println" kann ein Objekt als Argument akzeptieren. Damit

Sub.java


public class Sub{
    //Angenommen, etwas ist geschrieben
}

Main.java


public class Main
    public static void main(String[] args){
        Sub s = new Sub();

        System.out.println(s);            // (1)
        System.out.println(s.toString()); // (2)
}

Die Ausgabeergebnisse von "(1)" und "(2)" sind gleich.

Ausführungsergebnis.


test.Sub@5c8da962
test.Sub@5c8da962

toString-Methode

Überschreiben und verwenden. Im vorherigen Beispiel

Sub.java


public class Sub {
	String name = "Honda Mio";

	public String toString(){
		return this.name;
	}
}

Main.java


public class Main
    public static void main(String[] args){
        Sub s = new Sub();
        System.out.println(s);            // (1)
        System.out.println(s.toString()); // (2)
}

Ausführungsergebnis.


Honda Mio// (1)
Honda Mio// (2)

Was zum Teufel ist dieses Programm? (Zu rau)

Die toString Methode selbst der String Klasse ist

String.java


public class toString(){
    return this;
}

Dies scheint der einzige zu sein. Ich drückte F3 in Eclipse und las es, aber es war in Zeile 2806.

entspricht Methode

Es kann für das Äquivalenzurteil und das Gleichheitsurteil verwendet werden.

Grobe Erkennung. Die einfache "Gleich" -Methode selbst ist

String.java


    public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String aString = (String)anObject;
            if (coder() == aString.coder()) {
                return isLatin1() ? StringLatin1.equals(value, aString.value)
                                  : StringUTF16.equals(value, aString.value);
            }
        }
        return false;

(Es war in der Linie 1002) Wenn Sie sich das jetzt genauer ansehen, ist es Nacht und es sieht so aus, als würden Sie die ganze Nacht wach bleiben. Aber grob gesagt bedeutet dies, dass sie tatsächlich ein Gleichstellungsurteil fällen. Wenn Sie es also tatsächlich verwenden, entscheiden Sie, was gleichwertig ist.

Wenn das Feld "Name" dasselbe ist, wird Yoshi! Damit ...

Sub.java


public class Sub {
	String name = "Honda Mio";

	public boolean equals(Object o){
		//Wenn sie gleich sind(Auf jeden Fall gleichwertig)
		if (this == o) {
			return true;
		}
		
		//Wenn sie gleichwertig sind
		if (o instanceof Sub) {
			Sub s = (Sub) o;
			if (this.name == s.name) {
				return true;
			}
		}
		
		//Wenn weder gleich noch gleichwertig
		return false;
	}
}

Main.java


public class Main {
	public static void main(String[] args) {
		//Erstellen Sie 3 Instanzen
		Sub s1 = new Sub();
		Sub s2 = new Sub();
		Sub s3 = new Sub();

		//Geben Sie in jedes Namensfeld einen Wert ein
		s1.name = "Honda Mio";
		s2.name = "Honda Mio";
		s3.name = "Keisuke Honda";

		//Geben Sie das Ergebnis der Äquivalenzbeurteilung aus
		System.out.pritln( s1.equals(s2) );
		System.out.pritln( s1.equals(s3) );
	}
}

Ausgabeergebnis.


true
false

Es ist ein wirklich grobes Programm Nun, es ist eine Erinnerung daran, wie man es benutzt, also ist alles in Ordnung ...

Nachschlagewerk

[Einführung in Java 2nd Edition] (https://www.amazon.co.jp/%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%8F%E3%81%8B%E3%82%8BJava%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E4%B8%AD%E5%B1%B1-%E6%B8%85%E5%96%AC/dp/484433638X) Pp.541-551

Recommended Posts

[Java] Implizites Vererbungsprotokoll
Java-Lernnotiz (Vererbung)
[Java] Vererbung
Java-Memo
Java-Vererbung
Java-Vererbung
Java (Vererbung)
Java alles Memo
[Java] Klassenvererbung
Java Silver Memo
Java SE 7 Hinweis
Java alles Memo 2
Über Java-Vererbung
Java-Spezifikationsnotiz
Java-Muster-Memo
Memo zur Java-Entwicklungsumgebung
Java Grundwissen Memo
Java-Lernnotiz (Methode)
Java Kuche Day Memo
Fassen Sie die Java-Vererbung zusammen (Java Silver 8)
Java Se 8 Programmierer Ⅰ Memo
Java bezahlte private Memo
Informationen zur Vererbung (Java Silver)
Java-Lernnotiz (grundlegend)
(Memo) Java für Anweisung
Java Lambda Ausdruck [Notiz schreiben]
Java-Lernnotiz (Schnittstelle)
Programmiernotiz für Java-Wettbewerbe
[Memo] Java Linked List
Java (WebSphere Application Server) Hinweis [1]
Zusammenfassung der erweiterten Vererbung, Schnittstelle -java
[Java] Namensnotiz des Variablennamens
Java-Memo-Teilzeichenfolge (Standardklasse)
Vererbung der JAVA-Lernverlaufsschnittstelle
Java-Lernnotiz (Datentyp)
Länge des Java-Memos (Standardklasse)
Java Silver Lernmethode Memo
Erstellen Sie eine Java-Methode [Memo] [java11]
Java Silver Prüfungsvorbereitungsnotiz
Java-Lernnotiz (logischer Operator)
Java-Lernnotiz (abstrakte Klasse)
[Java] Datum Verwandte Begriffsnotiz
Java Study Memo 2 mit Progate
[Java] Was ist Klassenvererbung?
Java (Vererbung von is-ein Prinzip)
Was sind Java-Metriken? _Memo_20200818
Java HashMap, entrySet [Persönliches Memo]
Muskel Java Objektorientierter Tag 2 ~ Vererbung ~
[Eclipse Java] Memo zum Einstellen der Entwicklungsumgebung
Java-Lernnotiz (Erstellen eines Arrays)
JCA-Verwendungsprotokoll (Java Encryption Architecture)
Erbe
[Java] Memo zum Benennen von Klassennamen
Erbe
[Memo zur Studiensitzung] Java Day Tokyo 2017
Java-Lernnotiz (while-Anweisung, do-while-Anweisung)
Java
Von Java zu VB.NET-Writing Kontrastmemo-