Bienvenue Prénom - Déconnexion

Mot de passe oublié ?Accès membres : merci de vous identifier

BOURSE

RUBRIQUES

 
 TUTORIELS 
L'héritage de classes en Java

Page 1 | 2

Première approche d'un des aspects principaux de la programmation Objet avec Java.
 (25 novembre 2002)
 

Modification d'une méthode héritée
Dans le cas où la méthode de la sous-classe ne doit pas s'éxecuter de la même manière que dans sa super-classe, il faut la redéfinir en lui donnant le même nom et les mêmes paramètres que dans la super-classe.

public class Monotreme
  {
  void seDeplacer()
    {
    this.marcher4pattes();
    }
  }

public class Marsupilami extends Monotreme
  {
  void seDeplacer()
    {
    this.marcher4pattes();
    this.marcher2pattes();
    this.bondir();
    this.nager();

    }
  }

Pareillement, il peut être nécessaire de modifier l'ensemble des méthodes héritées par une sous-classe. Dès lors, il faut modifier la déclaration de la sous-classe: elle n'étend plus sa super-classe, elle l'implémente. L'héritage se fait avec l'instruction implements:

public class Mammifere
  {
  void corps()
    {
    this.sangChaud();
    }
  }

public class Monotreme implements Mammifere
  {
  void seDeplacer()
    {
    this.marcher4pattes();
    this.marcher2pattes();
    this.bondir();
    this.nager();

    }
  }


Héritage "multiple"
Notons que Java ne permet de réaliser que l'héritage simple. L'héritage multiple (où la sous-classe hérite de plusieurs super-classes) est possible mais ne transmet pas les déclarations des fonctions d'une classe: seul l'héritage multiple de types est possible, l'héritage multiple d'implémentation étant pour sa part interdit.
On est obligé de créer le code pour les différentes fonctions. On ne parle alors plus de super-classe mais d'interface. L'interface est déclarée comme une super-classe, à ceci près qu'elle utilise le mot-clé interface, et que le code des fonctions n'y est pas défini.
Une même classe peut implémenter plusieurs interfaces, mais ne peut étendre qu'une seule classe abstraite ou concrète:

public interface Mere
  {
  void seNourir();
  ...
  }

class Enfant extends humain implements Mere, Pere
  {
  void seNourir()
    {
    ...
    }
  ...
  }

L'héritage est un vaste sujet. Nous y reviendrons dans de prochains articles dédiés à Java...

Page 1 | 2

 
[ Xavier Borderie,JDNet
 
Accueil | Haut de page
 
 

 

A VOIR EGALEMENT