Maison >Java >javaDidacticiel >Quand utiliser des interfaces et quand utiliser des classes abstraites en Java
Quand utiliser les interfaces : Définir des fonctions partagées, implémentées par différents types d'objets. Définissez des interfaces de rappel (telles que des écouteurs d'événements). Implémentez l’héritage multiple. Quand utiliser des classes abstraites : définissez des fonctions communes implémentées via l’héritage. Implémentez l'héritage unique et le polymorphisme. Définissez une méthode ou un champ protégé.
Quand utiliser des interfaces et des classes abstraites en Java
En Java, les interfaces et les classes abstraites sont des concepts abstraits utilisés pour définir le comportement des objets. Malgré leurs similitudes, il existe de nettes différences dans leur finalité d’utilisation.
Interface
Une interface est un contrat qui contient des signatures de méthode (c'est-à-dire des déclarations de méthode sans implémentation). Il définit l'ensemble des méthodes publiques qu'une classe doit implémenter.
Quand utiliser les interfaces ?
public interface Animal { void eat(); void sleep(); }
Classe abstraite
Une classe abstraite est une classe partiellement abstraite qui contient une combinaison d'implémentations de méthodes et de méthodes abstraites. Les classes abstraites ne peuvent pas être instanciées, mais peuvent être héritées par les sous-classes.
Quand utiliser les cours abstraits ?
public abstract class Mammal { public void giveBirth() { ... } public abstract void makeSound(); }
Cas pratique
Interface
Créez une interface Shape et définissez des méthodes publiques de calcul de l'aire et du périmètre :
public interface Shape { double getArea(); double getPerimeter(); }
Utilisez cette interface pour créer des classes Rectangle et Cercle :
public class Rectangle implements Shape { // ... } public class Circle implements Shape { // ... }
Classe abstraite
Créez une classe abstraite Shape et définissez des méthodes protégées pour calculer l'aire et le périmètre :
public abstract class Shape { protected double area; protected double perimeter; public abstract double getArea(); public abstract double getPerimeter(); }
Créez des classes Rectangle et Circle en utilisant cette classe abstraite, en remplaçant les méthodes getArea() et getPerimeter() :
public class Rectangle extends Shape { // ... } public class Circle extends Shape { // ... }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!