[JAVA] Quelle est la différence entre interface et abstract? ?? ??

Expliquez grossièrement la différence

interface ・ ・ ・ Pas une classe (important)
résumé ・ ・ ・ Modificateurs pour les classes, etc.

À propos de l'interface

① Variable

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.
}
② Méthode

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
	}
}
③ Méthode d'héritage

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.
	}
}

À propos du résumé

① Variable

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)
}
② Méthode

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.
}
③ Méthode d'héritage

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() {}
}

Quelle était la différence après tout? ?? ??

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.

Supplément

Quelle est la différence entre les outils et les extensions? ?? ??

implémente ・ ・ ・ Hériter de l'interface. étend ・ ・ ・ Hérite de la classe.

Conclusion,

interface ・ ・ ・ Pas une classe
résumé ・ ・ ・ Modificateurs pour les classes, etc.

Recommended Posts

[JAVA] Quelle est la différence entre interface et abstract? ?? ??
[JAVA] Différence entre abstrait et interface
Quelle est la différence entre SimpleDateFormat et DateTimeFormatter? ??
[Java] Quelle est la différence entre form, entity et dto? [Haricot]
Quelle est la différence entre System Spec et Feature Spec?
[Rails] Quelle est la différence entre la redirection et le rendu?
Quelle est la différence entre ignorer et en attente? [RSpec]
[Rails] Quelle est la différence entre l'installation et la mise à jour du bundle?
Quelle est la différence entre une action et une méthode d'instance?
Quelle est la différence entre un serveur Web et un serveur d'applications?
[Java] Comprendre la différence entre List et Set
Comprenez la différence entre les classes abstraites et les interfaces!
[Java] Différence entre == et égal
[Java] Différence entre Hashmap et HashTable
[Java] Différence entre array et ArrayList
[Java] Différence entre fermable et fermable automatiquement
[Java] Différence entre StringBuffer et StringBuilder
[Java] Différence entre longueur, longueur () et taille ()
Différence entre Java et JavaScript (comment trouver la moyenne)
Qu'est-ce que la classe LocalDateTime? [Java débutant] -Date et classe d'heure-
[Java] Vérifiez la différence entre orElse et orElseGet avec IntStream
L'évaluation des courts-circuits est-elle vraiment rapide? Différence entre && et & en Java
Quelle est la différence entre les responsabilités de la couche domaine et de la couche application dans l’architecture onion [DDD]
Différence entre final et immuable en Java
Qu'est-ce que 'java
interface et résumé
[Pour les débutants] Différence entre Java et Kotlin
Quelle est la meilleure lecture de fichier (Java)
Qu'est-ce que Java et l'environnement de développement (MAC)
Qu'est-ce que Java <>?
Quelle est la méthode principale en Java?
Qu'est-ce que 'java
À propos de la différence entre irb et pry
[Java] Différence entre la plage Intstream et la plageClosed
Différence entre int et Integer en Java
Java vs JavaScript: quelle est la différence?
Une note sur les différences entre les interfaces et les classes abstraites en Java
Comprendre la différence entre int et Integer et BigInteger en java et float et double
[Rails / Active Record] À propos de la différence entre créer et créer!
Qu'est-ce que le modèle Java Servlet / JSP MVC?
Quel est le modificateur volatile pour les variables Java?
Résumer les différences entre l'écriture C # et Java
[Java] Différence entre "variable finale" et "objet immuable"
Qu'est-ce qu'une interface
abstract (classe abstraite) et interface (interface)
Qu'est-ce que l'encapsulation Java?
Qu'est-ce que la technologie Java?
Qu'est-ce que Java API-java
Différence entre vh et%
[Java] Qu'est-ce que flatMap?
Différence entre i ++ et ++ i
[Java] Qu'est-ce que ArrayList?
[Java] Différence entre equals et == dans une chaîne de caractères qui est un type de référence
[Ruby] J'ai réfléchi à la différence entre each_with_index et each.with_index
[Rails] J'ai étudié la différence entre les ressources et les ressources