Posez votre question Signaler

Heritage java

Lo - Dernière réponse le 18 juil. 2003 à 13:39
Si la class B herite de la class A est il possible de transformer un objet de la class B en un objet de la class A, afin qu'il perde les informations de la class B ?

Merci
Lire la suite 

Heritage java »

11 réponses
Réponse
+0
moins plus
suppose une classe planete et une classe planete_gazeuse et planete_nongazeuse qui heritent de la classe planete.

une planete peut etre gazeuse mais pas forcément
alors qu'une planète gazeuse ou non_gazeuse est forcément une planete

donc oui tu peux caster ta classe B qui hérite de A en un objet A, tu fais
B b(...);
(A)b;
dezbao - 18 juil. 2003 à 12:09
Si B hérite de A, peux-tu caster un objet B en un objet A? C'est plutôt le contraire...
Quel est ton avis?
Samya - 18 juil. 2003 à 12:11
ben non justement l'inverse n'est pas possible
c pour ca ke g illustrer mon exemple avec les planètes !!!
Ajouter un commentaire
Réponse
+0
moins plus
Il faut redefinir les méthodes de la classe héritée (A) dans la classe qui hérite (B).
Ajouter un commentaire
Réponse
+0
moins plus
J n'avais pas bien compris la question...
Ajouter un commentaire
Réponse
+0
moins plus
Merci pour les réponses, pour être plus clair :


public class Planete {
...
public void print(){
System.out.println(" je suis une planete ");
}
}

public class PlaneteGazeuse extend Planete {
...
public void print(){
System.out.println(" je suis une planete gazeuse");
}
}


Je voudrais pouvoir faire :

PlaneteGazeuse g = new PlaneteGazeuse();

et ensuite convertir g en Planete de facon a ce que g.print() affiche " je suis une planete" et plus generalement de maniere a
ce que g soit reelement d'instance Planete . Ce qui ne marche pas avec un simple cast ... Apparament il y a des techniques d'upcast mais je n'ai pas encore tout compris.
Samya - 18 juil. 2003 à 12:19
ok
y a un autre moyen mais laisse moi le temps de m'en souvenir
Ajouter un commentaire
Réponse
+0
moins plus
Tu mets dans le constructeur de la classe Planete tu mets ta chaine caracteres "je suis une planete ", et ensuite dans le constructeur de la classe PlaneteGazeuse tu appelles le constrcture de la classe heritée en faisant " this.super().
Cette methode te renvoie la chaine de carctère de la classe héritée.

En faisant PlaneteGazeuse pl=new PlaneteGazeuse (), ====> "je suis une planete ".
Ajouter un commentaire
Réponse
+0
moins plus
Tu fais tout simplement : super.print()
et c'est réglé!!!!
Ajouter un commentaire
Réponse
+0
moins plus
Effectivement ca marche, mais ca ne me suffit pas car je voudrais que l'objet devienne reelement et uniquement un objet de la classe mère.

Il y aurait une technique qui serait de passer par le constructeur de la classe mère ( creer un nouvel objet mère et lui reaffecter tous les attributs de l'objet fils ) mais qui est un peu fastidieux et lourd si le nombre d'attributs est important.

Apparement c'est assez compliqué ou impossible de faire ca plus simplement ...
Samya - 18 juil. 2003 à 13:39
tu me construire l'objet fille a partir de l'objet mere en utilisant de la meme manière que précédemment le mot clé super :
public PlaneteGazeuse(Att1, Att2, Att3){
super(att1, att2);
...
}
Ajouter un commentaire
Ce document intitulé « heritage java » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Windows 8 - À quoi s'attendre ?