Outils pour utilisateurs

Outils du site


bloc2:prog:poo:classesabstraites

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
bloc2:prog:poo:classesabstraites [2023/04/02 21:41] – [Comment les utiliser] yvinec.tbloc2:prog:poo:classesabstraites [2023/04/11 12:00] (Version actuelle) – [Concept] admin
Ligne 12: Ligne 12:
  
 Exemple :  Exemple : 
-<code=java>// une classe abstraite A+<code java A.java> 
 +// une classe abstraite A
 public abstract class A public abstract class A
 { {
Ligne 23: Ligne 24:
     public abstract void autreMethode (int nombre) ;     public abstract void autreMethode (int nombre) ;
 } }
 +</code>
 +<code java B.java>
 +// une classe qui dérive la classe abstraite A
 +public class B extends A
 +{
 +
 +    // implémentation de la méthode abstraite de A : obligatoire, 
 +    // sinon B reste abstraite
 +    public void autreMethode (int param) {
 +        ...
 +    }
 +}
 +
 +// instanciation d'une classe qui dérive une classe abstraite : OK
 +B b = new B (...) ; 
 </code> </code>
 ===== Bénéfices ===== ===== 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 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.   * 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.
 +===== Règles de construction =====
 +  * Dès qu’une classe comporte une ou plusieurs méthodes abstraites, elle est abstraite, même si on ne l’indique pas avec le mot-clé « abstract » dans sa définition. 
 +
 +  * Une classe qui hérite d’une classe abstraite n’est pas tenue de redéfinir toutes les méthodes abstraites (elle peut n’en définir que certaines). Dans ce cas elle demeure elle-même abstraite.
 +
 +===== Exemples d'utilisation =====
 +
 +=== Définir une classe abstraite ===
 +
 +<code=java>
 +public abstract class Classe_A {
 +    ...
 +}
 +</code>
 +=== Définir des méthodes abstraites ===
 +<code=java>
 +public  class Classe_A {
 +    // Bien observer ici qu'il s'agit d'une signature de méthode :
 +    //    + Pas de corps défini => pas de {}
 +    //    + Un point-virgule en fin de ligne
 +    public abstract void uneMethode (liste_de_paramètres);
 +    ...
 +}
 +</code>
 +
 +=== Hériter de la classe abstraite (rien de nouveau ...) ===
 +<code=java>
 +public class Classe_B extends Classe_A {
 +    ...
 +}
 +</code>
 +
 +=== Implémenter les méthodes abstraites ===
 +<code=java>
 +public class UneClasse extends Classe_A {
 +
 +    @Override
 +    public void uneMethode (liste_de_paramètres) {
 +        // Implémentation de la méthode ... qui n'est plus abstraite
 +    }
 +}
 +</code>
  
-===== Comment les utiliser ===== 
  
-=== Définir la classe abstraite en utilisant le mot-clé "abstract" devant la déclaration de classe. === 
bloc2/prog/poo/classesabstraites.1680464474.txt.gz · Dernière modification : 2023/04/02 21:41 de yvinec.t