Java, Schnittstelle für Anfänger

Einführung

Dieser Artikel ist ein Memorandum. Obwohl es sich um einen Inhalt auf Referenzebene handelt, lautet der in diesem Artikel zu veröffentlichende Code ** Falsch ** sind die Hauptsachen. Dies dient dazu, den Teil zu veröffentlichen, der beim Codieren tatsächlich falsch war, und ihn zur Selbstreflexion zu veröffentlichen. Außerdem werde ich hier nicht auf den tiefen Teil eingehen, da ich ihn später überprüfen werde, während ich auch die Fragen zur Java Silver-Prüfung studiere.

Umgebung

Sprache: Java11, JDK13.0.2 Betriebsumgebung: Windows 10

Schnittstelle

Es gibt einen Mechanismus namens ** Schnittstelle **, der ähnlich wie die ** abstrakte Klasse ** verwendet wird, die beim letzten Mal behandelt wurde. Die abstrakte Klasse war eine Art Klasse, und die Schnittstelle wurde für denselben Zweck erstellt, aber die Deklarations- und Implementierungsmethode ist unterschiedlich.

declareInterface.java


interface Felidae
{
  String type = cats;
  void meetsCats();
}

Die übliche class Deklaration ist weg und wird durch interface ersetzt. Wie eine Klasse kann sie Felder und Methoden haben (** es kann keinen Konstruktor geben **), ** Objekte wie Felidae cat = new Felidae (); können nicht erstellt werden **. Da "void meets Cats ()" eine abstrakte Methode ist, ist es außerdem erforderlich, eine konkrete Methode durch die Klasse vorzubereiten, die die Felidae-Schnittstelle implementiert (Override).

String type = cat; ist ein Schnittstellenfeld, dies ist jedoch eine ** Konstante ** und kann nicht geändert werden. Dies liegt daran, dass sich die Felder in der Schnittstelle im selben Zustand wie bei "public static final" befinden (ich weiß immer noch nicht warum).

inplementedFlidae.java


class Housecat inplements Felidae
{
  void meetsCats()
  {
    System.out.println("Ich habe eine Katze gefunden. Ich denke, es ist irgendwo eine Hauskatze.");
  }
}

Anstelle der Erweiterung "erweitert" handelt es sich um "implementiert", aber die Form ist dieselbe wie zuvor.

Prinzip: Nur eine Superklasse

Warum brauchen wir eine abstrakte Methodenschnittstelle? Ich würde gerne alles mit Klassenerweiterungen machen, aber Java ** erlaubt keine Mehrfachvererbung durch mehrere Klassen **. Es gibt nur eine übergeordnete Oberklasse. Es scheint, dass Sie nicht so denken sollten wie das Systemdiagramm, das Menschen denken. Ich habe ein wenig über den Grund gesehen, aber es scheint, dass es hier eine gewisse Tiefe gibt, wie den Aufruf, wenn der Methodenname getragen wird, und das Diamantproblem. Eine andere Sprache, "C ++", ermöglicht diese Mehrfachvererbung.

Es ist jedoch schwierig, das, was Sie einmal vorbereitet haben, zu verwenden. Anstelle der Mehrfachvererbung durch Klassen versuchen wir daher, die Einfachheit als Sprache beizubehalten, indem wir nur eine teilweise Mehrfachvererbung durch abstrakte Klassen und Schnittstellen zulassen. ** Die Implementierung der Schnittstelle kann mit zwei oder mehr ** erfolgen. Sie können auch die Schnittstelle selbst erweitern und Superschnittstellen auf Subschnittstellen erweitern.

Am Ende

Wenn ich mir den Teil anschaue, in dem die Vererbung durch Erweiterung zulässig ist, denke ich, dass Java eine Sprache ist, die sich gut für die beschreibende Entwicklung eignet. Wenn Sie die bereits abgeschlossene Klassenschnittstelle kennen und davon ausgehen, dass Sie eine neue Klasse erstellen, während Sie ihre Funktionen erben, beginnen Sie mit dem Studium von Java, indem Sie zunächst die Funktionen der Standardbibliothek kennen.

Referenz

Ich schreibe und kompiliere Variablen und Ausdrücke so oft wie möglich selbst. Wenn ich sie also vollständig zitieren möchte, werde ich sie beschreiben.

Easy Java 7th Edition Java SE11 Silver Problem Collection (allgemein bekannt als Kuromoto)

Recommended Posts

Java, Schnittstelle für Anfänger
Änderungen von Java 8 zu Java 11
Summe von Java_1 bis 100
Migration von Cobol nach JAVA
Java ab Anfänger überschreiben
Neue Funktionen von Java7 bis Java8
Stellen Sie eine Verbindung von Java zu PostgreSQL her
Java, Instanz für Anfänger
Java ab Anfänger, Vererbung
Java8 startet jetzt ~ Optional ~
Von ineffektivem Java zu effektivem Java
Java Anfänger 4
[Java-Anfänger] Über Abstraktion und Schnittstelle
Java (Schnittstelle)
Java Anfänger 3
Java Anfänger
[Java] -Schnittstelle
Java soll ab heute dabei sein
Von Java zu VB.NET-Writing Kontrastmemo-
Java, Überlastungskonstruktor ab Anfänger
Der Weg von JavaScript nach Java
Java, Arrays für Anfänger
Java 8 ~ Stream API ~ startet jetzt
[Java] Konvertierung von Array zu Liste
Schnittstelle Versuchen Sie, Java-Problem TypeScript 7-3 zu machen
Bedeutung der aus der Java Collection gelernten Schnittstelle
Java ab Anfänger, verschachtelt / Pause / Weiter
Konvertieren Sie von der Java-UTC-Zeit in die JST-Zeit
Stellen Sie mit Eclipse eine Verbindung von Java zu MySQL her
Java 8 startet jetzt ~ Datums- und Uhrzeit-API ~
Von der Installation von Eclipse bis zur Ausführung von Java (PHP)
Post to Slack von Play Framework 2.8 (Java)
Java: So senden Sie Werte von Servlet zu Servlet
[Java] Fluss vom Quellcode zur Ausführung
Einführung in die Überwachung von Java Touching Prometheus
Java, für Anweisung / while-Anweisung ab Anfänger
Vorsichtsmaßnahmen bei der Migration von VB6.0 auf JAVA
Memo für die Migration von Java nach Kotlin
Typkonvertierung vom Java Big Decimal-Typ zum String-Typ
Über die Java-Schnittstelle
Übungen für Java-Anfänger
[Java] Einführung in Java
[Java] Funktionsschnittstelle
Über Schnittstelle, Java-Schnittstelle
Einführung in Java
Java-Übung "Anfänger"
[Java] Von zwei Listen zu einer Array-Liste
Zwei Möglichkeiten, einen Thread in Java + @ zu starten
R von Java ausführen Ich möchte rJava ausführen
Stellen Sie über eine Java-Anwendung eine Verbindung zu Aurora (MySQL) her
Um ein VB.net-Programmierer aus einem Java-Shop zu werden
So erhalten Sie eine Klasse von Element in Java
Java ab Anfänger, Klassendeklaration / Objekterzeugung
[Java] So wechseln Sie von Open JDK zu Oracle JDK
Java 8 startet jetzt ~ für jeden und Lambda-Ausdruck ~
Ich möchte schnell von Java nach SQLite schreiben
Minecraft BE Serverentwicklung von PHP nach Java
Wählen Sie * aus dem Java SDK in Azure Cosmos DB
Informationen zur Java-Funktionsschnittstelle
Starten Sie Docker von Java aus, um Office-Dokumente in PDF zu konvertieren