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

avec Java Discussion :

Réécriture méthode Héritage


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 13
    Par défaut Réécriture méthode Héritage
    Bonjour,
    Je ne comprend le principe de réécriture d'une méthode utilisé avec l'héritage,
    Je créer une classe Mère appelée TestMere et une classe Fille appelée TestFille.
    TestFille hérite donc de la classe TestMere.
    TestMere comporte un méthode que je souhaite réécrire dans la classe Fille sans qu'elle rentre dans la methode de la classe Mere.
    Malheureusement ma classe fille n'est pas reconnu et le compilateur ne passe pas dans la methode de la classe Fille.

    Cela vient'il d'une mauvaise déclaration d'objet ou autre ?

    Code :


    Le main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class Heritage
    {
    	public static void main ( String[] args)
    	{
    		TestMere test = new TestMere();
    		test.ecriture();
    	}
    }

    Classe Mere:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class TestMere
    {
     
    	public void ecriture(){
    		System.out.println("Test.ecriture()");
    	}
    }

    Classe Fille:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class TestFille extends TestMere
    {
     
    	@Override
    	public void ecriture() {
    		// TODO Auto-generated method stub
     
    		System.out.println("TestFille.ecriture()");
     
    	}
     
    }
    Merci d'avance pour votre aide

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 333
    Par défaut
    Est ce que c'est quelque chose comme ça que tu veux tester ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class Heritage
    {
    public static void main ( String[] args)
    {
    TestMere test = new TestMere();
    test.ecriture();
    TestMere test2 = new TestFille();
    test2.ecriture();
    }
    }
    tu vas avoir :
    Test.ecriture()
    TestFille.ecriture()

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 13
    Par défaut
    Non je pensais que en faisant Test.ecriture() le compilateur remarquerais qu'une classe fille existe est que la methode est réécriture dans celle-ci.
    Du coup je veux voir :
    "TestFille.ecriture()"

    En créant seulement l'objet de la classe mère.
    Je ne sais pas si c'est possible

  4. #4
    Membre expérimenté
    Avatar de karbos
    Inscrit en
    Novembre 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 155
    Par défaut
    En fait l'intérêt de l'héritage c'est de faire abstraction de la manière dont tu as instancié tes classes. Mais tu dois quand même les instancier à un moment, sinon, dans quel cas ton compilateur choisirait entre la méthode de la classe mère ou celle de la classe fille ? A quoi ça sert d'avoir écrit les deux ?
    En Java on ne fait que des trucs utiles
    Voici un exemple où ton abstraction est utile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    TestMere[] tableauDeTests = new TestMere[2] //<-- Un tableau pour stocker deux variables de type TestMere
    tableauDeTests[0] = new TestMere(); //<-- On instancie une classe mère qu'on stocke dans le tableau
    tableauDeTests[1] = new TestFille(); //<-- On instancie une classe fille qu'on stocke dans le tableau
    //Appelle des méthodes dans une boucle :
    for (int i = 0; i< 2; i++) {
      tableauDeTests[i].ecriture();
    }
    Comme avec l'exemple de LittleBean, tu vas avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Test.ecriture()
    TestFille.ecriture()

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 13
    Par défaut
    Oui je comprend bien mais j'ai vu qu'on pouvais réécrire les méthodes d'une classe mere du coup le compilateur prend un compte la modification de la classe fille mais ne rentre pas dans la classes mère.

    Peut etre que je confond avec la surcharge de classe.
    Ces spécificité de ce langage ne sont pas encore très clair.

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 333
    Par défaut
    En Java on ne fait que des trucs utiles
    ++

    Avec cet exemple ce sera paut être plus clair :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class TestMere{
    	public void ecriture(){
    		System.out.println("Test.ecriture()");
    	}
    public void bonjour(){
    		System.out.println("bonjour");
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public static void main ( String[] args)
    {
    TestMere test = new TestFille();
    test.ecriture();
    test.bonjour();
    }
    Avec l'héritage là tu as modifié le code d'une seule méthode en gardant les autres.

    L'exemple est bateau mais si tu as un projet avec des milliers de classes, diminuer la redondance du code est indispensable.

Discussions similaires

  1. Pointeur sur méthode + héritage
    Par Bleastou dans le forum C++
    Réponses: 20
    Dernier message: 22/09/2008, 14h54
  2. Problème d'héritage d'une méthode protégée
    Par shenron666 dans le forum C++
    Réponses: 9
    Dernier message: 28/04/2005, 23h17
  3. Réponses: 8
    Dernier message: 04/06/2004, 09h13
  4. [Débutant] Héritage & appel de méthodes
    Par KooX dans le forum Langage
    Réponses: 4
    Dernier message: 11/05/2004, 23h37
  5. [Héritage] Redéfinition méthode
    Par petit-ourson dans le forum Langage
    Réponses: 9
    Dernier message: 06/05/2004, 16h06

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