next up previous contents
suivant: final monter: Extension de classes précédent: Un exemple   Table des matières

Constructeurs

Il existe toujours des constructeurs par défaut: la partie correspondant à la superclasse est construite avant.

En général, il est préférable de créer ses propres constructeurs.

Un constructeur d'une extension de classe peut appeler explicitement un constructeur de sa super classe. L'exemple suivant montre comment et dans quel ordre les constructeurs sont appelés en cas d'héritage.



transparent
Constructeurs


class X {
    protected int xMask = 0x00ff;
    protected int fullMask;
    public X(){
        fullMask = xMask;
    }
    public int mask(int orig){
        return (orig & fullMask);
    }
}
class Y extends X{
    protected int yMask = 0xff00;
    public Y(){
        fullMask |= yMask;
    }
}


On aura successivement:
  xMask yMask fullMask
valeur par défaut des champs 0 0 0
appel constructeur pour Y 0 0 0
appel constructeur pour X 0 0 0
initialisation champ X 0x00ff 0 0
constructeur X 0x00ff 0 0x00ff
initialisation champ Y 0x00ff Oxff00 0
constructeur Y 0x00ff 0xff00 0xffff
Le principe de ces règles est que les variables de l'objet sont d'abord créées, puis initialisées (les initialisations de la super classe ayant lieu avant), puis les constructeurs sont invoqués : au moment de cette invocation toutes les variables d'instances ont été créées et initialisées.


next up previous contents
suivant: final monter: Extension de classes précédent: Un exemple   Table des matières
Hugues Fauconnier 2002-01-11