Java : quelle est la différence entre une Interface et une classe abstraite ?

L'interface et la classe abstraite sont deux méthodes différentes pour gérer l'organisation des classes.

Dans le langage Java, l'interface et la classe abstraite sont deux méthodes différentes pour gérer l'organisation de ces classes. D'un point de vue concret, elles ne s'utilisent pas de la même façon.

Si vous choisissez d'utiliser une interface, vous devez indiquer dedans les méthodes à implémenter. Voici un exemple d'interface à partir d'un système de connexion :

public interface authentification {
public String encrypterMotDePasse(String motDePasse);
public void verifierUtilisateurEnBaseDeDonnees();
}

Si vous décidez de développer une classe qui implémente l'interface, vous devez obligatoirement écrire toutes les méthodes de l'interface :

public class BDDMySQL implements authentification {
 public String encrypterMotDePasse(String motDePasse) {
 //Code à écrire obligatoirement
 }
 public void verifierUtilisateurEnBaseDeDonnees() {
 //Code à écrire obligatoirement
 }
}

Si vous utilisez la notion d'héritage, vous pouvez écrire le code de la méthode dans la classe parente. Vous n'êtes pas obligé de réécrire ensuite le code dans la classe enfant : elle utilisera le même code que la classe dont elle hérite. Si vous choisissez d'utiliser le mot-clé abstract lors de la déclaration de la méthode dans la classe parent, alors le code devra obligatoirement être réécrit dans la classe enfant.

public abstract authentification {
public String encrypterMotDePasse(String motDePasse) {
// Cette méthode contient du code, la classe enfant n'est pas obligé de la redéfinir
}
public abstract void verifierUtilisateurEnBaseDeDonnees();
}

Voici alors une possibilité de code pour une classe qui hérite :

public class BDDMySQL extends authentification {
public void verifierUtilisateurEnBaseDeDonnees() {
//Code à écrire obligatoirement
}
}

L'héritage et l'interface sont des notions de développement qui se ressemblent sous certains aspects, mais elles répondent à des nécessités différentes. C'est au développeur Java de bien définir quelle technique utiliser selon ce dont il a besoin.

Java