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.
"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.
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.
Zuerst von der Methode. Ich habe sie in einer Tabelle für jede der "Schnittstellen" und "abstrakten Klassen" zusammengestellt.
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. |
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.
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 |
abstrakte Modifikator
der abstrakten Methode ist ** erforderlich !!! **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.)
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 final Wird werden. |
--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.
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. |
――Es unterscheidet sich nicht von der konkreten Methode!
--Schnittstelle --Abstraktionsmethode → Zusammenfassung ist ** optional **
--Abstrakte Klasse --Abstrakte Klasse → ** Zusammenfassung sollte geschrieben werden **
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