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 :

Abstract et Interface


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 39
    Par défaut Abstract et Interface
    Bonsoir à tous,

    j'ai lu les tutos mais j'arrive tjs pas à bien cerner la différence entre abstract et interfaces, lequel choisir??? lequel est le mieux....

    Merci à vous

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 899
    Billets dans le blog
    54
    Par défaut
    => voir ici : http://www.developpez.net/forums/sho...95&postcount=3

    Si tu as deja fait du C++, une interface est l'equivalent d'une classe virtuelle pure, et une classe abstraite d'une classe virtuelle.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 39
    Par défaut
    donc si je comprend bien,

    mon type définit par l'interface sera customisé par les classes qui vont l'implémenter?
    exemple si j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    interface véhicule{
    public demarrer();
    public arreter();
    }
    et que j'ai deux classe
    voitureMoteur et voitureAeau
    ils vonts implémenter demarrer() et arreter() mais en définissant un comportement différent c'est ça?

    et abstract alors? je pige pas, je m'enmêle un peu là.

    lmerci de votre aide

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 899
    Billets dans le blog
    54
    Par défaut
    oui les methodes peuvent etre totalement differentes et sans rapport entre elles.

    Avec une classe abstraite, tu peux :

    1) ne pas definir de comportement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public abstract void arreter();
    2) definir un comportement generique et modifiable (surchargeable) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void arreter() {
    ...
    }
    3) definir un comportement definitif :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public final void arreter() {
    ...
    }

    N'oublie pas que tu peux aussi definir des methodes protected, package protected et private qui en plus des methodes publiques peuvent servir a definir un comportement plus commun a toutes les sous-classes.

    Evidement la difference est peu flagrante sur une classe a deux methodes. Regarde du cote des actions (Action et AbstractAction) Swing. Tu peux soit :
    - definir tes propres Action avec ta propre implementation completement differente de celle de AbstractAction.
    - reutiliser AbstractAction telleq uelle dans une classe fille (apres tout y a pas des masses de methode abstract dans cette classe - mais c'est la un cas particulier)
    - surcharger les methodes de AbstractAction pour reutiliser le comportement pre-existant mais ne le modifiant a ta sauce.

    Sinon tu peux aussi voir du cote de ItemSelectable (utilisee a la fois par AsbractButton et JCheckBox par exemple) et de AbstractButton (et de ses differentes classes filles).
    Le comportement commun entre tous les types de boutons est introduit par AbstractButton, tandis que ItemSelectable indique juste qu'on peut rajouter des listeners (mais ne specifie rien sur leur stockage (puisqu'il n'y a pas de code) donc chaque implementation doit faire a sa sauce).

    Evidement on introduit aussi un type quand on utilise une classe abstraite, oui mais voila, il n'y a pas d'heritage multiple en Java. D'ou la necessite des interface, pour heriter de plusieurs types a la fois.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 39
    Par défaut
    ok, nickel je comprend mieux.
    j'ai une autre question mais je vais créer un autre topic

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 39
    Par défaut
    désolé de réouvrir ce topic mais je voulais pas en créér un autre vu que ça en rapport avec ma question.


    Comment prouver que les champs d'une interface sont implicitement static et final?

    Merci de votre aide

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/04/2010, 17h14
  2. Abstract class + Interface
    Par adilooo dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 28/05/2009, 16h26
  3. différence entre Abstract et Interface?
    Par prugne dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 01/05/2009, 16h28
  4. Réponses: 6
    Dernier message: 26/11/2007, 17h06

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