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 :

[Classe abstraite] Problème de surcharge


Sujet :

Langage Java

  1. #1
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut [Classe abstraite] Problème de surcharge
    Bonjour à tous,

    Bon je suppose que ma question n'est pas compliqué, mais mes connaissances en Java sont maigres et là j'ai besoin d'un petit éclaircissement ...

    J'ai un fichier Deplacement.java qui contient la class Deplacement avec quelques attributs private, quelques méthodes public et protected et une méthode public abstract seDeplcaer(); en gros voila une partie de ce fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public abstract class Deplacement //j'ai essayé avec et sans le abstract
    {
        private int posX;
        private int posY;
        private int Vitesse;
        private int Vue;
        private int rayonInfluence;
        public abstract void Deplacer();
     
       protected ...
    }
    Maintenant j'ai un autre fichier DepTerre.java dans lequel je définis une class DepTerre héritant de Deplacement. Dans cette classe je voudrais définir la fameuse fonction Deplacer. Je fais comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class DepTerre extends Deplacement
    {
     
        public void Deplacer(Animal [][] g)
        {
         ...
        }
    Mais lors de la compilation je me retrouve avec une erreur qui est :
    "DepTerre is not abstract and does not override abstract method Deplacer() in Deplacement
    public class DepTerre extends Deplacement
    "

    Donc voila un peu où j'en suis ... si quelqu'un pouvait m'éclaircir sur le sujet sur comment faire pour déclarer cette fameuse fonction Deplcaer dans DepTerre ... Je vous en serais très reconnaissant


    Par avance merci de votre réponse



    PS : j'arrive à avoir compilation que si je mets les deux classes Deplacement et DepTerre en abstract ... mais je ne pense pas pouvoir accéder aux fonction du coup ... Enfin bref j'attends votre réponse
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 333
    Points : 295
    Points
    295
    Par défaut
    tu es obligé d écrire une methode déplacer() sans argument dans ta classe DepTerre

    genre

    public void Deplacer(){

    }

  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Il faut que tu définisses la fonction Deplacer() dans DepTerre comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public void Deplacer() {...}
    Comme DepTerre n'est pas abstraite, elle doit définir les méthodes abstraites de Deplacement.
    Hors quand tu définis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public void Deplacer(Animal [][] g) { ... }
    tu ne définis pas la méthode public void Deplacer() de la classe Deplacement, puisque les paramètres sont différents.

  4. #4
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Rhhhoo Exact en plus c'est une erreur de base même pas provenant du Java ...

    Désolé de mon erreur mais surtout merci beaucoup de votre aide ...


    Juste une dernière remarque : est-il normal que je dois déclarer la classe Deplacement comme abstraite ?


    Après ça j'arrête promis


    Merci encore pour votre aide à vous deux ...
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 333
    Points : 295
    Points
    295
    Par défaut
    oui ... euh enfin si tu souhaites utiliser une calsse abstraite

    après c'est une histoire de conception !!
    à toi de voir ce que tu veux

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par Bleys
    Juste une dernière remarque : est-il normal que je dois déclarer la classe Deplacement comme abstraite ?
    Oui et non : si tu ne définis pas de comportement par défaut à tes méthodes ou de méthodes par défaut (non abstraites), tu peux te poser la question de passer plutôt par une interface. Méfie toi en plus : tes attributs private de ta classe Deplacement ne sont pas visibles des classes filles (DepTerre par exemple).

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  7. #7
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Ok merci à vous tous pour votre contribution ... effectivement il faut que je passe tout en protected


    Merci encore et bonne journée
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  8. #8
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Ou laisser en private, et mettre des getter/setter public, ce que je préfère.

  9. #9
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Oui en fait c'est ce que j'ai fait ... je préfère aussi
    Enfin je me suis adapté



    Merci encore pour la remarque
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/11/2012, 10h59
  2. Surcharge d'opératuers et classes abstraites.
    Par Zenigata dans le forum C++
    Réponses: 4
    Dernier message: 28/12/2007, 00h42
  3. Problème héritage et classes abstraites
    Par sebzinzin dans le forum Langage
    Réponses: 4
    Dernier message: 03/06/2007, 18h24
  4. Réponses: 6
    Dernier message: 20/03/2007, 10h51
  5. Problème de dérivation d'un class abstraite
    Par the big ben 5 dans le forum Delphi .NET
    Réponses: 8
    Dernier message: 20/07/2006, 20h04

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