Aller au contenu principal
Publié le

abstract en Java

Partager :

Introduction

abstract est un modificateur en Java utilisé principalement dans les contextes de programmation orientée objet. Il joue un rôle crucial dans le développement de systèmes modulaires et flexibles.

Qu'est-ce que abstract ?

En Java, abstract est utilisé pour indiquer que :

  1. Une classe ne peut pas être instanciée directement.
  2. Une méthode n'a pas de corps et doit être implémentée dans une sous-classe.

Pourquoi utiliser des Classes et des Méthodes abstract ?

  1. Pour Mettre en Avant le Design : Les classes abstraites sont souvent utilisées pour définir un modèle ou un design pour d'autres classes.
  2. Polymorphisme : Cela facilite le polymorphisme, car les classes dérivées peuvent avoir différentes implémentations des méthodes abstraites.
  3. Éviter la Création Accidentelle d'Objets : Comme les classes abstraites ne peuvent pas être instanciées, elles évitent la création accidentelle d'objets.

Différence entre abstract et Interface

  • Méthodes et Variables : Alors qu'une interface ne peut contenir que des signatures de méthodes, une classe abstraite peut contenir à la fois des méthodes complètes et des méthodes abstraites.
  • Variables d'État : Les classes abstraites peuvent contenir des variables d'état, contrairement aux interfaces.
  • Héritage Multiple : Java ne prend pas en charge l'héritage multiple de classes, mais permet à une classe d'implémenter plusieurs interfaces.

Illustration avec du Code

Les classes et méthodes abstraites sont utilisées quand une base commune est nécessaire, mais que l'on ne souhaite pas que cette base soit instanciée :

package com.caffeinealgorithm.programaremjava;

import java.util.ArrayList;
import java.util.List;

public class Abstract {
  public void Run() {
    // ClasseX.informationX();
    var instance = new ClasseY();
    instance.informationY();

    /*
      Pays : Portugal
      Pays : Brésil
      Pays : Espagne
      Pays : France
      Pays : Italie
      Pays : Australie
      Pays : Inde
    */
  }
}

abstract class ClasseX {
  public static String communaute = "Caffeine Algorithm";
  public static List<String> pays = new ArrayList<>();

  public static void informationX() {
    for (char caractere : communaute.toCharArray())
      System.out.printf("Caractère : %c\n", caractere);
  }

  public abstract void informationY();
}

class ClasseY extends ClasseX {
  public void informationY() {
    pays.add("Portugal");
    pays.add("Brésil");
    pays.add("Espagne");
    pays.add("France");
    pays.add("Italie");
    pays.add("Australie");
    pays.add("Inde");

    for (String unPays : pays)
      System.out.printf("Pays : %s\n", unPays);
  }
}

Dans cet exemple, ClasseX est abstraite, ce qui signifie qu'elle ne peut pas être instanciée, mais ClasseY (une classe dérivée) peut l'être.

Conclusion

Le modificateur abstract est un outil précieux dans l'arsenal d'un développeur Java. Il favorise de bonnes pratiques de design, aidant les développeurs à créer des systèmes plus robustes et maintenables.

Happy coding!