[Java] [javaSliver] Die Schnittstelle und die abstrakten Klassen sind kompliziert, daher werde ich sie zusammenfassen.

Zweck dieses Artikels

Ich werde nächste Woche die Java-Silberprüfung ablegen, also habe ich beschlossen, die mehrdeutigen Teile zu vernichten. Lassen Sie uns die "Schnittstelle" und "abstrakte Klasse" aussortieren, die etwas verwirrend waren. Das ist der Zweck dieses Artikels.

Warum war es verwirrend?

"Abstrakte Methoden werden mit abstract deklariert. Wenn nicht, wird ein Kompilierungsfehler geschrieben" oder Es steht geschrieben, dass "wenn weggelassen, implizit eine öffentliche Zusammenfassung gegeben wird" ...

Ich war verwirrt als "das? Missverständnis?" Also wollte ich es einmal organisieren und der Verwirrung entkommen. Wenn ich jetzt darüber nachdenke, denke ich, dass die abstrakten Methoden, abstrakten Klassen und Schnittstellen durcheinander gebracht wurden. Ich denke.

Regelvergleich

Wir haben eine Liste zusammengestellt, was in Schnittstellen und abstrakten Klassen definiert werden kann. Organisieren. Ich habe sie organisiert, indem ich sie in Methoden und Feldvariablen unterteilt habe.

Über die Methode

Zuerst von der Methode. Ich habe sie in einer Tabelle für jede der "Schnittstellen" und "abstrakten Klassen" zusammengestellt.

** Schnittstellenmethoden **

Was kann definiert werden Zugriffsmodifikator Kann es weggelassen werden? Andere
Abstrakte Methode public Auch wenn weggelassen, öffentlich Wenn es sich um eine Schnittstelle handelt, können Sie Abstract weglassen.
Standardmethode public Kann ausgelassen werden * Es kann nach SE8 definiert werden.
statische Methode public or private Wenn weggelassen, öffentlich * Es kann nach SE8 definiert werden.

Punkt

Warum kann ich den abstrakten Modifikator in der Schnittstelle weglassen?

Dies ist eine Vermutung, zu der ich persönlich gekommen bin ... Grundsätzlich können nur abstrakte Methoden in der Schnittstelle definiert werden (bis zu SE8). Selbst wenn Sie nicht explizit abstrakt deklarieren, liest der Compiler diese in der Luft und fügt abstrakt hinzu. Ich beschloss nachzudenken.

** Abstrakte Klassenmethoden **

Was kann definiert werden Zugriffsmodifikator Kann es weggelassen werden? Andere
Abstrakte Methode Wie auch immer Zusammenfassung ist erforderlich. Zugriffsmodifikatoren können weggelassen werden. Selbst wenn Sie es weglassen, wird es nicht öffentlich sein
Konkrete Methode Wie auch immer Kann ausgelassen werden Zugriffsmodifikatoren können weggelassen werden. Selbst wenn Sie es weglassen, wird es nicht öffentlich sein

Punkt

Warum kann ich den abstrakten Modifikator in einer abstrakten Klasse nicht weglassen?

Da konkrete Methoden und abstrakte Methoden in der abstrakten Klasse gemischt sind, habe ich beschlossen, dass es notwendig ist, abstrakt explizit hinzuzufügen, um nicht verwirrt zu werden. (Dies ist auch eine Vermutung, zu der ich persönlich gekommen bin.)

Dann die Variablen

Schnittstelle

Feldtyp Kannst du es definieren? Kann nicht? Kann statisch weggelassen werden? Andere
Nicht statische Variablen (Instanzvariablen) Kann nicht definiert werden - Schnittstellen können nicht instanziiert werden.
statische Variable Es kann definiert werden, aber es wird eine Konstante sein Kann ausgelassen werden Auch wenn weggelassenpublic static finalWird werden.

Punkt

--Instanzvariablen können nicht definiert werden

Sie müssen zum Zeitpunkt der Instanziierung nicht über die Variablen nachdenken, da die Schnittstelle nicht instanziiert werden kann. Deshalb kann es nicht definiert werden. Jep. Überzeugt. Es kann nicht instanziiert werden, aber es kann als Typ behandelt werden, daher ist dies ein weiterer komplizierter Punkt.

** Abstrakte Klasse **

Feldtyp Kannst du es definieren? Kann nicht? Kann statisch weggelassen werden? Andere
Nicht statische Variablen (Instanzvariablen) Kann definiert werden Ich brauche es überhaupt nicht Sie können einen beliebigen Zugriffsmodifikator definieren.
statische Variable Kann definiert werden Kann nicht weggelassen werden Wenn Sie statisch weglassen, wird es zu einer Instanzvariablen. Sie können einen beliebigen Zugriffsmodifikator definieren.

Punkt

――Es unterscheidet sich nicht von der konkreten Methode!

Zusammenfassung

--Schnittstelle --Abstraktionsmethode → Zusammenfassung ist ** optional **

--Abstrakte Klasse --Abstrakte Klasse → ** Zusammenfassung sollte geschrieben werden **

schließlich

Es ist ein ziemliches Memo für mich, aber ich brauche noch Zeit, um es so zu organisieren. Wenn die Interpretation anders oder falsch ist, entschuldigen wir uns für die Unannehmlichkeiten, aber wir würden uns freuen, wenn Sie auf m (_ _) m hinweisen könnten.

Recommended Posts

[Java] [javaSliver] Die Schnittstelle und die abstrakten Klassen sind kompliziert, daher werde ich sie zusammenfassen.
Ich bin auf die Java-Version in Android Studio gestoßen, daher werde ich sie zusammenfassen
[JAVA] Was ist der Unterschied zwischen Schnittstelle und Zusammenfassung? ?? ??
Java abstrakte Methoden und Klassen
[Java] Ich habe über die Vorzüge und Verwendungen von "Schnittstelle" nachgedacht.
Ich habe den Java-Test Level 2 bestanden und werde eine Notiz hinterlassen
[JAVA] Unterschied zwischen Abstract und Interface
Rubys Arrays, Hashes und Symbole sind verwirrend, deshalb habe ich sie zusammengefasst.
Ich habe versucht, die Methoden von Java String und StringBuilder zusammenzufassen
Geben Sie die Reihenfolge an, in der die Konfigurationsdateien und Klassen in Java geladen werden
Ein Hinweis zu den Unterschieden zwischen Schnittstellen und abstrakten Klassen in Java
JAVA lernen Geschichte abstrakte Klassen und Methoden
Ich wusste nicht, dass innere Klassen in der [Java] -Schnittstelle definiert werden können
Verstehe den Unterschied zwischen abstrakten Klassen und Schnittstellen!
Ich habe die Eigenschaften von Java und .NET verglichen
Fassen Sie die Unterschiede zwischen C # - und Java-Schrift zusammen
Der Umgang mit Java Future ist zu langweilig, daher werde ich verschiedene Ideen ausprobieren.
Schnittstelle und Zusammenfassung
Ich habe Ruby Silver (Juni 2020) bestanden, also werde ich es zusammenfassen.
In der Abbildung verstandene Java-Klassen und -Instanzen
Ich habe die Typen und Grundlagen von Java-Ausnahmen zusammengefasst
Verwendung von Abstract Class und Interface in Java richtig
Ich habe festgestellt, dass ich eine Java-FW im Mono-Repo entwickle, daher werde ich die Operation in Betracht ziehen.
[Java] Fehler beim Methodenaufruf, wenn Vererbung und Schnittstellenimplementierung gleichzeitig ausgeführt werden