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

Langage Java Discussion :

[debutant] appel au contructeur d'une classe implémenté


Sujet :

Langage Java

  1. #1
    Membre actif Avatar de Legenyes
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 174
    Points : 207
    Points
    207
    Par défaut [debutant] appel au contructeur d'une classe implémenté
    bonjour, j'ai un petit probleme pour faire appel a un contructeur d'une classe qui est implémenté d'une interface.

    je possède :
    une classe plateau qui me defini un plateau de jeu
    une interface plateauInitial implémenté par
    plateauInitialStandard
    plateauInitialLu
    et ma classe principal qui doit faire appele au constructeur de plateauInitialStandard pour definir un plateau de type standard.

    Classe principale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Plateau plateau = new PlateauInitialStandard();
    Classe PlateauInitialStandard :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class plateauInitialStandard impements PlateauInitial{
         PlateauInitialStandard() { ...}
    }
    voici l'erreur que j'obtient en compilant ma classe mère.
    found : PlateauInitialStandard
    required : Plateau
    Je me perd un peu dans tus. c'est la premier fois que j'utilsie des interface soyé donc indulgent

    Merci d'avance.

  2. #2
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    Ta classe Plateau n'est la mere d'aucune classe, pour l'instant ce que tu peux faire c'est ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PlateauInitial plateau = new PlateauInitialStandard();
    sinon il faut que PlateauInitial derive de Plateau

  3. #3
    Membre actif Avatar de Legenyes
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 174
    Points : 207
    Points
    207
    Par défaut
    Merci pour ta réponse
    J'ai essayer ce que tu me demande.
    voici ce que j'ai fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PlateauInitial plateauInitial = new PlateauInitialStandardd();
    Probleme!!!
    j'ai besoin d'un objet Plateau. j'ai alors fais comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PlateauInitial plateauInitial = new PlateauInitialStandardd();
    Plateau plateau = (Plateau) plateauInitial;
    Mais cela me génère une erreur a l'éxecution
    ClassCastException

  4. #4
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    oui c'est nomal, ton plateauInitial n'est pas un Plateau meme si leur nom se ressemble.

    Il faut que Plateau devienne classe mere de PlateauInitiale (mais je sais plus si on a le droit pour une interface)
    Il faudrais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    interface PlateauInitiale extends Plateau
    et si tu n'a pas le droit de faire ca, chaque classe qui implemente PlateauInitial devra extends Plateau

  5. #5
    Membre actif Avatar de Legenyes
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 174
    Points : 207
    Points
    207
    Par défaut
    Ca marche pas et je n'ai pas le droit de toucher au class qui implémente PlateauInitial (PlateauInitialLu et PlateauInitialStandard).
    car c'est dans le cadre d'un projet pour l'ecole

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 124
    Points : 159
    Points
    159
    Par défaut
    Que ta classe implémente une interface ou non ça ne change rien.

    L'interface c'est juste un moyen de fixer et montrer les services offerts par une classe sans dévoiler le code qu'il y a derrière.

    Tu ne peux pas instancier une interface mais uniquement les classes qui l'implémente.

    Bref tu ne pourras pas faire de "new plateauInitial" car c'est une interface, par contre tu pourras sans problème faire :
    plateauInitialStandard monPlateauStandard = new plateauInitialStandard();
    plateauInitialLu monPlateauInitialLu = new plateauInitialLu();
    plateau monPlateau = new plateau();

    La 1ère solution instancie un plateau standard de nom monPlateauStandard, c'est pas ce que tu voulais ?

    Souvent une interface a le même nom que la classe qui l'implémente (en c++ je crois que c'est toujours le cas par exemple), ce qui fait croire qu'on peut instancier une interface, mais c'est pas le cas.
    C'est un peu comme si je te donne le sommaire d'un livre de cuisine, tu sais ce que le livre contient mais tu ne sauras pas faire une recette car il te manque la recette en elle-même.

    A part ça, je ne vois pas de liens d'héritage dans ce que tu as écrit (sinon il y aurait un "extends" quelques part) mais je suppose que vous pourriez en mettre un entre plateau (classe mère) et plateauInitialStandard et/ou PlateauInitialLu (2 classes filles).

    Voilà j'espère que ça t'a aidé.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 29/11/2007, 16h03
  2. Appel de fonction depuis une classe fille
    Par lhpp dans le forum Interfaces Graphiques en Java
    Réponses: 8
    Dernier message: 26/04/2006, 22h02
  3. Appel de fonction dans une classe
    Par Seth77 dans le forum Langage
    Réponses: 8
    Dernier message: 16/01/2006, 10h32
  4. Réponses: 5
    Dernier message: 20/11/2005, 11h15
  5. Réponses: 11
    Dernier message: 16/10/2005, 20h21

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