Peut déclarer et implémenter des variables. Cependant, "public static final" est implicitement ajouté.
interface noTsukaikata {
int Num = 6; //Puisque final est attaché, il ne peut pas être initialisé. → Il est traité comme une constante.
}
Seules les méthodes abstraites peuvent être déclarées.
interface noTsukaikata {
void method(); //Déclaration de méthode abstraite (la méthode de l'interface reçoit une clause abstraite)
// abstract void method();Est automatiquement converti en.
}
En fait, il peut être implémenté en utilisant la clause par défaut ou la clause statique.
interface deJisou{
//Implémenter des méthodes dans l'interface en utilisant la clause default
default void method1(){
//more codes here
}
//Implémenter des méthodes dans l'interface à l'aide de la clause statique
static void method2(){
//more codes here
}
//Erreur de compilation sans clause par défaut ou statique
void method3() {
//more codes here
}
}
l'interface ne peut hériter que des implémentations.
interface Super{
int Num;
default void method1(){
//more codes here.
}
static void method2(){
//more codes here.
}
void method3();
}
class Sub implements Super{
//Puisque la variable est définitive, il n'est pas nécessaire de l'écrire.
//Comme la méthode par défaut a déjà été implémentée, elle n'a pas besoin d'être implémentée dans la classe Sub. Peut être remplacé au besoin.
//Étant donné que la méthode statique n'est pas héritée, elle ne peut pas être implémentée dans la classe Sub.
//Mettre en œuvre la méthode3
@Override
protected void method3(){//Gamme de divulgation(portée)Le modificateur d'accès peut être modifié tant qu'il n'est pas restreint.
//more codes here.
}
}
Le contenu de la classe Sub en héritant de ce qui précède est le suivant.
class Sub implements Super{
int Num = 6;
default void method1(){
//more codes here.
}
//Il n'y a pas de méthode statique car elle n'est pas héritée.
protected void method3(){
//more codes here.
}
}
Traité exactement de la même manière qu'une classe ordinaire.
abstract class Super {
int Num1; //Peut être déclaré
int Num2 = 6; //Peut être initialisé
abstract int Num3 = 10; //Erreur de compilation (les variables ne peuvent pas être abstraites)
}
Les méthodes abstraites peuvent également être déclarées.
interface Super {
abstract void method1(); //Vous pouvez déclarer des méthodes abstraites.
void method2() {} //Il peut être implémenté sans la clause abstraite.
}
abstract ne peut hériter que des extensions.
abstract class Super {
int Num1;
int Num2 = 6;
abstract void method1();
void method2() {}
}
class Sub extends Super{
@Override
void method1() {}
}
Le contenu de la classe Sub en héritant de ce qui précède est le suivant.
class Sub extends Super{
int Num1;
int Num2 = 6;
void method1() {}
void method2() {}
}
interface | abstract | |
---|---|---|
variable | "Finale statique publique" automatiquement | Exactement la même que la classe régulière |
Méthode | 基本的に抽象Méthodeのみ宣言できる。ただし、「default」や「static」句を利用し、実装できる。 | 抽象Méthodeも宣言できる。 |
Méthode d'héritage | Hérité par implements. Les sous-classes implémentent toutes les méthodes abstraites. | Hérité de extend. Les sous-classes implémentent toutes les méthodes abstraites. |
implémente ・ ・ ・ Hériter de l'interface. étend ・ ・ ・ Hérite de la classe.
Conclusion,
Recommended Posts