Si tu a B extends A, et que tu as creer ces deux classe dans une classe main, tu peut acceder aux méthodes de A depuis B, mais pas le contraire.
Marco la baraque
Contributeur
Bonjour,
Ta classe B étend A, mais ça ne veut pas dire qu'il y a une relation entre tes instances de A et de B.
Par exemple, si tu as:
A a = new A();
B b = new B();
Alors tu ne pourras jamais accéder aux attributs de 'a' depuis 'b' (sauf s'ils sont static évidemment).
Si tu instancies B, java instancie automatiquement A (à cause de ta relation d'héritage), et ton instance 'b' de B pourra alors accéder aux attributs de cette instance de A automatiquement créée (si tes attributs ne sont pas private, ou si tu as des accesseurs dans A).
En revanche, une instance de A ne pourra jamais accéder aux attributs de B, car il n'y a pas de relation d'héritage en ce sens.
Cordialement.
____22
Auteur
ok merci et comment on instancie une classe?
blue-project
class A{
private int iA;
public A{
iA=0;
}
public int getA(){
return iA;
}
}
class B extends A{
private int iB;
public B{
iB=0;
}
public int getB(){
return iB;
}
}
soit ces 2 classes.
alors on pourra faire dans le Main
class Main{
public Main(){
A a1= new A(); // OK
A a2= new B(); // OK
B b1= new A(); // non
B b2= new B(); // OK
a1.getA(); // OK
a1.getB(); // impossible (instance de A)
b2.getA(); // OK (B recuperre les attribut de A)
b2.getB(); // OK
}
}
Voila pour le petit exemple.
Pour instancier une classe tu fait
A objA = new A(attribut1, attribut2, ...);
____22
Auteur
ok merci
je crois pour que ça marche il faut mettre un super(); dans le public B
blue-project
pas obligatoirement java le fait par defaut mais seulement si la class A (pour l'exemple ci-dessus) a le constructeur par 'défaut' (public A();)
sinon il faut bien sur le mettre dans la class B comme cela:
Trouvez des réponses à vos questions sur les langages, les frameworks et les astuces de codage. Échangez avec d'autres développeurs passionnés pour améliorer vos compétences en programmation et rester au fait des dernières tendances du secteur.