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 :

héritage et interfaces


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Par défaut héritage et interfaces
    Bonsoir,
    je vais peut-être poser une question un peu trop générale mais j'aurais besoin de savoir les conditions pour pouvoir se servir de la méthode d'une interface (redefinitions ..) et de même pour les methodes des super classes (quand faut-il utiliser le mot cle super pour redefinir une 'super' methode.. ).

    Merci d'avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 151
    Par défaut
    Citation Envoyé par vincs72 Voir le message
    Bonsoir,
    je vais peut-être poser une question un peu trop générale mais j'aurais besoin de savoir les conditions pour pouvoir se servir de la méthode d'une interface (redefinitions ..) et de même pour les methodes des super classes (quand faut-il utiliser le mot cle super pour redefinir une 'super' methode.. ).

    Merci d'avance
    bonjour,
    En effet ta question est un peu trop générale. A mon avis un simple tutoriel sur la POO (recherche sur google ) suffira à repondre à tes questions .
    Et ne me remercie pas c'est gratuit

  3. #3
    Membre expérimenté

    Étudiant
    Inscrit en
    Mai 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 200
    Par défaut
    Bonsoir,

    Tout d'abord si t'a une classe qui implémente une interface tu es obligé de redéfinir chacune des méthodes de l'interface.

    Si tu as une classe qui etend une classe abstraite, tu es obligé de redéfinir l'ensemble des méthodes abstraites de cette classe.

    Ensuite pour redéfinir une méthode, pas besoin de mot clé spécial. Il suffit d'ajouter la même méthode dans ta classe fille.

    Le mot clé super peut te servir par exemple a appelé la méthode redéfinie de la super classe.

    Voici un ptit exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public interface MonInterface {
     
    	public void maMethode();
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class MaClasse implements MonInterface {
     
    	public void maMethode() {
    		// corps de la méthode
    	}
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class MaClasseFille extends MaClasse {
     
    	public void maMethode() {
    		super.maMethode(); // appel de la méthode de la super classe (falcutatif)
     
    		// nouveau corps de la méthode
    	}
     
    }

  4. #4
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Par défaut
    Merci pour ta réponse. Je souhaiterais te poser quelques questions^^

    Pour appeler la méthode de la super-classe avec le mot clé "super", il ne faut pas que cette méthode soit abstraite n'est pas ?

    Sinon je vais prendre un exemple concret.
    J'aimerais me servir des méthodes transferTo() et transferFrom() de la classe abstraite FileChannel afin de passer des bytes d'une SocketChannel à un FileChannel.
    Mais ce sont des méthodes abstraites. Je dois donc les redéfinir?
    Mais alors quel est l'intérêt de se servir d'une super classe, si je dois redéfinir la méthode?
    Ne pourrais-je pas obtenir le même résultat dans passer par l'héritage?

  5. #5
    Membre expérimenté

    Étudiant
    Inscrit en
    Mai 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 200
    Par défaut
    Pour appeler la méthode de la super-classe avec le mot clé "super", il ne faut pas que cette méthode soit abstraite n'est pas ?
    Non pas besoin.

    J'aimerais me servir des méthodes transferTo() et transferFrom() de la classe abstraite FileChannel afin de passer des bytes d'une SocketChannel à un FileChannel.
    Mais ce sont des méthodes abstraites. Je dois donc les redéfinir?
    Mais alors quel est l'intérêt de se servir d'une super classe, si je dois redéfinir la méthode?
    Ne pourrais-je pas obtenir le même résultat dans passer par l'héritage?
    Je ne connais pas le fonctionnement de la classe FileChannel mais tu devrais regarder la Javadoc et les classes qui étendent cette classe. Une de ces classes convient surement a ton besoin.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 151
    Par défaut
    Citation Envoyé par vincs72 Voir le message
    ?
    ...
    Mais ce sont des méthodes abstraites. Je dois donc les redéfinir?
    Mais alors quel est l'intérêt de se servir d'une super classe, si je dois redéfinir la méthode?
    Ne pourrais-je pas obtenir le même résultat dans passer par l'héritage?
    Salut,
    au risque de me repéter un petit tutoriel t'aiderait mieux et plus vite.

    Mais ce sont des méthodes abstraites. Je dois donc les redéfinir?
    ==> Il faut les redéfinir sinon sa compile pas .


    Mais alors quel est l'intérêt de se servir d'une super classe, si je dois redéfinir la méthode?
    ==> Les interêts sont nombreux:en poo + on est abstrait + le compilateur est content , production du code efficace, etc ..
    La super classe abstraite peut contenir d'autres methodes définies utilisables directement par les classes filles(on factorise). La redéfnition d'une méthode abstraite permet d'avoir des comportements differents.C'est le polymorphisme.

    Un exemple parmi tant d'autres. Les animaux emettent des sons mais les sont ne sont pas les mêmes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    public abstract class Animal{
    String nom;
    public abstract emettreSon();
    public afficher(){
    //methode non abstraite
    }
     
    public Animal(){
     
    }
    }
     
    //******** classes concrètes
    public class Chien extends Animal{
     
    public emettreSon(){
    Sysem.out.println(nom +" ouaf, ouaf");
    }
     
    public Chien (){
    super();
    }
    }
     
     
     
     
     
    public class Chat extends Animal{
     
    public emettreSon(){
    Sysem.out.println( nom + "  miaou , miaou");
    }
     
    public Chat (){
    super();
    }
     
    }
    Le polymorphisme est fondamental en poo.

    ET je passe sur l'utilisation des interfaces.

    Ne pourrais-je pas obtenir le même résultat dans passer par l'héritage?
    ==> oui il n'y a pas que l'héritage.
    ++

Discussions similaires

  1. Héritage et interfaces
    Par buzzkaido dans le forum C++
    Réponses: 10
    Dernier message: 23/10/2007, 18h02
  2. Héritage d'interface avec masquage de méthode
    Par Pongten dans le forum ASP.NET
    Réponses: 4
    Dernier message: 05/09/2007, 23h16
  3. Héritage et interfaces
    Par fabrisss dans le forum Langage
    Réponses: 7
    Dernier message: 09/05/2007, 17h01
  4. [POO] héritage et interface
    Par stailer dans le forum Langage
    Réponses: 1
    Dernier message: 17/04/2007, 14h14
  5. [Héritage et Interfaces] Quelle solution choisir ?
    Par BlackWood dans le forum Langage
    Réponses: 10
    Dernier message: 14/11/2006, 12h08

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