IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Problème Java: Super


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2020
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2020
    Messages : 30
    Par défaut Problème Java: Super
    Bonjour à tous,

    Je programme en Java en autodidacte en "m'autoformant" via des forums, tutos, etc.
    Je rencontre mon premier problème sur le mot clé "super". J'ai repris un exemple sur les véhicules que j'ai modifié pour que je puisse bien comprendre les mécanismes des classes, d'objets, etc.
    J'ai créé trois classes:
    La classe questionnaire: qui demande à un utilisateur de saisir (scanner) une puissance, une couleur et un prix pour un véhicule. Les informations saisies "se stockent" dans la deuxième classe:
    La classe véhicule: je fais afficher une phrase "bâteau" reprenant la puissance, la couleur et le prix.
    La classe voiture: je reprends les données de la classe véhicule via un extends et un super et j'ajoute à l'affichage une autre petite phrase "bâteau": C'est une voiture".

    Enfin, je souhaite afficher tout cela sur ma classe questionnaire.

    Pour résumer, j'essaie de créer une "sorte de cheminement en boucle" où les valeurs se transmettent de questionnaire à véhicule, de véhicule à voiture et de voiture à questionnaire.

    Je me suis trompé, je pense savoir où, mais je n'en suis pas sûr et je bloque. Je pense que je me suis trompé sur le super de la classe voiture et/ou sur l'affichage de celui-ci dans la classe questionnaire. Le problème est que lors de l'execution de la classe questionnaire, ma phrase "bâteau" sur la puissance etc. revient du mot clé super situé dans la classe voiture, mais sans les valeurs saisies: puissance, couleur et prix (cela affiche des zéros ou null). Alors, que si j'affiche directement cette phrase de la classe vehicule, la phrase et les valeurs s'affichent. C'est ce qui me fait penser que je me suis trompé dans le super de la classe voiture.

    Je me permets de vous mettre mes codes des 3 classes ci dessous.

    Merci beaucoup si vous pouvez m'aider.

    Encore merci et à bientôt

    Bruno

    Ma classe Questionnaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class Questionnaire {
    public static void main(String[] args) {
    Vehicule A=new Vehicule();
    Scanner lectureClavier=new Scanner(System.in);
    System.out.println("Quelle est la puissance de votre véhicule (en chevaux) ?");
    A.puissance=lectureClavier.nextDouble();
    System.out.println("Quelle est la couleur de votre véhicule ?");
    A.couleur=lectureClavier.next();
    System.out.println("Quel est le prix de votre véhicule");
    A.prix=lectureClavier.nextDouble();
    A.afficher();
    Voiture B=new Voiture();
    B.afficher();
    }}

    Ma classe Vehicule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class Vehicule {
    double puissance;
    double prix;    
    String couleur;
    public void afficher() {
    System.out.println("Votre véhicule fait "+puissance+" chevaux, est de couleur "+couleur+" et coûte "+prix+" €");}
    }

    Ma classe Voiture

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class Voiture extends Vehicule {
    public void afficher() {
    super.afficher();
    System.out.println("et c'est une voiture");}
    }

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Hello,

    le problème ne vient pas de ton utilisation de super.afficher(), qui me semble ma foi très correcte.

    Le problème, c'est que les informations de puissance, prix et couleur, tu les as renseignées sur le Vehicule A.

    Tu n'as rien renseigné du tout sur la Voiture B. Tu la crées avec new Voiture() et tu appelles afficher() dessus directement après. Où aurait-elle trouvé des informations comme le prix ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2013
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 131
    Par défaut
    Salut,

    ton instance A de vehicule recoit bien les valeurs pour les proprietes puissance, prix et couleur. En revanche ton instance B elle ne recoit rien et en aucun cas n'herite des valeurs de l'instance A.

    Deux instances differentes (deux adresses differentes en memoire) ne partagent pas leurs valeurs.

    Si tu veux que ta methode afficher affiche bien les proprietes de B, alors l'instance de B doit elle aussi recevoir, via le scanner, des valeurs.


    L'heritage permet, a une classe enfant, d'heriter des proprietes de la classe mere (pas leur valeurs mais juste leur proprietes !).
    Si chaque animal possede un nom, alors la classe Dog et la classe Cat qui heritent d'Animal possederont toutes les deux une propriete name MAIS un chien peut s'appeler bethoven et un chat chatounet

  4. #4
    Membre actif
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2020
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2020
    Messages : 30
    Par défaut
    Salut

    Merci beaucoup, je comprends mieux mon erreur. Je pensais que les instances se "répercutaient". Je comprends mieux le problème de l'instance B. Donc j'ai faux et j'ai compris (je crois) grâce merci beaucoup

    A bientôt

    Bruno

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 26/08/2008, 10h00
  2. [BlueChat] Problème java gsm
    Par nicoacsa dans le forum Développement Mobile en Java
    Réponses: 2
    Dernier message: 06/02/2007, 00h24
  3. [EJB3] [JBoss] Problème java.lang.NoClassDefFoundError:
    Par jctigre dans le forum Java EE
    Réponses: 3
    Dernier message: 24/04/2006, 13h33
  4. Problème Java/MySql : "Unknown database"
    Par darkflo dans le forum JDBC
    Réponses: 3
    Dernier message: 24/03/2006, 11h34
  5. problème java run time environment
    Par abrmed dans le forum Autres Logiciels
    Réponses: 7
    Dernier message: 19/08/2005, 13h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo