Question en java
Ibravitsh
-
Ibravitsh -
Ibravitsh -
Bonjour , jai une question qui me parait un peu confuse : le cas où une class A extends class B et class B extends class C, sachant que chacune de ces classes possède une méthode public void affiche() , comment faire pour appeler la fonction affiche() de la classe C à partir d'une méthode de la classe A ?
j'ai pensé a super.super.affiche() ,mais la syntaxe est invalide !!
Cordialement !
j'ai pensé a super.super.affiche() ,mais la syntaxe est invalide !!
Class C {
public void affiche(){}
}
Class A extends B{
public void affiche(){}
}
Class B extends C{
public void affiche(){}
}
Cordialement !
A voir également:
- Question en java
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Eclipse java - Télécharger - Langages
2 réponses
De manière directe tu ne peux pas.
L'objet de la classe A n'a qu'une seule méthode affiche qui est celle de la classe A, celles de B et C sont "perdues" pour l'objet A.
Tu peux éventuellement faire référence dans A à une méthode de B via le mot clé super, mais ça ne fera référence à la méthode de C que si la méthode de B fait elle même référence à celle de C via un autre mot clé super.
Remarques :
- Tu ne peux pas passer de A à C sans passer par B.
- Tu n'es pas obligé de surcharger la méthode affiche dans B et A. Dans ce cas tu conserveras la méthode de C pour les objets de B et A.
L'objet de la classe A n'a qu'une seule méthode affiche qui est celle de la classe A, celles de B et C sont "perdues" pour l'objet A.
Tu peux éventuellement faire référence dans A à une méthode de B via le mot clé super, mais ça ne fera référence à la méthode de C que si la méthode de B fait elle même référence à celle de C via un autre mot clé super.
class C
{
public void affiche()
{
System.out.print("C");
}
}
class B extends C
{
@Override
public void affiche()
{
super.affiche(); // méthode affiche de C
System.out.print("B");
}
}
class A extends B
{
@Override
public void affiche()
{
super.affiche(); // méthode affiche de B
System.out.print("A");
}
}
public static void main(String[] args)
{
A a = new A();
a.affiche(); // CBA
}
Remarques :
- Tu ne peux pas passer de A à C sans passer par B.
- Tu n'es pas obligé de surcharger la méthode affiche dans B et A. Dans ce cas tu conserveras la méthode de C pour les objets de B et A.
class C
{
public void affiche()
{
System.out.print("C");
}
}
class B extends C
{
}
class A extends B
{
}
public static void main(String[] args)
{
A a = new A();
a.affiche(); // C
} La confiance n'exclut pas le contrôle