Outils pour utilisateurs

Outils du site


bloc2:prog:poo:classesabstraites

Ceci est une ancienne révision du document !


Classes abtraites

Concept

Une classe abstraite est une classe qui ne peut pas être instanciée directement, mais qui sert plutôt de modèle ou de base pour d'autres classes. Elle est conçue pour être héritée et étendue par d'autres classes qui peuvent en revanche être instanciées.

Dans une classe abstraite, on pourra trouver :

  • Des méthodes et attributs classiques, comme on en a déjà l’habitude en POO ;
  • Des méthodes dites « abstraites » qui fournissent uniquement leur signature. Charge aux classes qui en héritent de définir le code de ces méthodes.

Exemple :

// une classe abstraite A
public abstract class A
{
    // une méthode non abstraite (=implémentée) dans A
    public void maMethode() {
        ...
    } 
 
    // une méthode abstraite de A
    public abstract void autreMethode (int nombre) ;
}

Bénéfices

  • On peut placer dans une classe abstraite toutes les fonctionnalités dont on souhaite disposer dans ses classes dérivées, sans pour autant définir leur fonctionnement interne;
  • On peut utiliser des classes abstraites pour simplement empêcher qu’une classe ne soit instanciée parce que son existence en tant que classe est uniquement technique et ne repose pas sur le besoin de manipuler l’objet en tant que tel.

Comment les utiliser

Définir la classe en Abstract Class.

Il n'est plus possible de l'instancier, la méthode print ne fonctionne donc plus. Il faut à présent laisser les méthodes dans la super-classe.

Définir la méthode en Abstract

Nous devons transformer la méthode print en Abstract, cependant, lorsqu'une méthode est de type Abstract, elle ne peut contenir de body.

Il faut donc supprimer ce qu'elle contient.

Une fois la méthode transformé en Abstract, nous pouvons décommenter la méthode print de CD et DVD.

Et pour finir nous devons mettre la pastille Override pour ne pas avoir de conflit entre les méthodes print de la classe mère et de ses classes filles.

bloc2/prog/poo/classesabstraites.1680094698.txt.gz · Dernière modification : 2023/03/29 14:58 de admin