Kann Variablen deklarieren und implementieren. "Public static final" wird jedoch implizit hinzugefügt.
interface noTsukaikata {
int Num = 6; //Da final angehängt ist, kann es nicht initialisiert werden. → Es wird als Konstante behandelt.
}
Es können nur abstrakte Methoden deklariert werden.
interface noTsukaikata {
void method(); //Deklaration der abstrakten Methode (Methode in der Schnittstelle erhält abstrakte Klausel)
// abstract void method();Wird automatisch in konvertiert.
}
Tatsächlich kann es mithilfe der Standardklausel oder der statischen Klausel implementiert werden.
interface deJisou{
//Implementieren Sie Methoden in der Schnittstelle mithilfe der Standardklausel
default void method1(){
//more codes here
}
//Implementieren Sie Methoden in der Schnittstelle mithilfe einer statischen Klausel
static void method2(){
//more codes here
}
//Kompilierungsfehler ohne Standard- oder statische Klausel
void method3() {
//more codes here
}
}
Schnittstelle kann nur Geräte erben.
interface Super{
int Num;
default void method1(){
//more codes here.
}
static void method2(){
//more codes here.
}
void method3();
}
class Sub implements Super{
//Da die Variable endgültig ist, muss sie nicht geschrieben werden.
//Da die Standardmethode bereits implementiert wurde, muss sie nicht in der Unterklasse implementiert werden. Kann bei Bedarf überschrieben werden.
//Da die statische Methode nicht vererbt wird, kann sie nicht in der Unterklasse implementiert werden.
//Implementieren Sie method3
@Override
protected void method3(){//Offenlegungsbereich(Umfang)Der Zugriffsmodifikator kann geändert werden, solange er nicht eingegrenzt ist.
//more codes here.
}
}
Der Inhalt der Unterklasse durch Erben des Obigen ist wie folgt.
class Sub implements Super{
int Num = 6;
default void method1(){
//more codes here.
}
//Es gibt keine statische Methode, da sie nicht vererbt wird.
protected void method3(){
//more codes here.
}
}
Genauso behandelt wie eine reguläre Klasse.
abstract class Super {
int Num1; //Kann deklariert werden
int Num2 = 6; //Kann initialisiert werden
abstract int Num3 = 10; //Kompilierungsfehler (Variablen können nicht abstrahiert werden)
}
Es können auch abstrakte Methoden deklariert werden.
interface Super {
abstract void method1(); //Sie können abstrakte Methoden deklarieren.
void method2() {} //Es kann ohne die abstrakte Klausel implementiert werden.
}
abstrakt kann nur erweitert erben.
abstract class Super {
int Num1;
int Num2 = 6;
abstract void method1();
void method2() {}
}
class Sub extends Super{
@Override
void method1() {}
}
Der Inhalt der Unterklasse durch Erben des Obigen ist wie folgt.
class Sub extends Super{
int Num1;
int Num2 = 6;
void method1() {}
void method2() {}
}
interface | abstract | |
---|---|---|
Variable | Automatisch "public static final" | Genau das gleiche wie die reguläre Klasse |
Methode | 基本的に抽象Methodeのみ宣言できる。ただし、「default」や「static」句を利用し、実装できる。 | 抽象Methodeも宣言できる。 |
Vererbungsmethode | Von Geräten geerbt. Unterklassen implementieren alle abstrakten Methoden. | Vererbt von erstreckt. Unterklassen implementieren alle abstrakten Methoden. |
implementiert ・ ・ ・ Schnittstelle erben. erweitert ・ ・ ・ Erbt die Klasse.
Fazit,
Recommended Posts