begin process at 2010 02 09 19:57:16
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Divers

 > 

Débutant(e)

 > 

Héritage et dialogue entre les classes


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Héritage et dialogue entre les classes

lundi 1 janvier 2007 à 01:44:30 | Héritage et dialogue entre les classes

deterred

Bonjour,

Mon probleme va sans doute paraitre tres simple, peut etre absurde à certains, mais je débute en Java et seul ce n'est pas simple.
Voici ma question.

Comment dialoguer entre les classes d'un projet ? Dans le sens Appelante, Appelée c'est facile, mais dans l'autre ?
Un exemple pour m'expliquer mieux :

public class parent {
    public parent () {
       fille mafille = new fille();          
    }
    public void fonctionA() {
       ...
    }
}

public class fille {
    public fille() {
      ...
    }
}


Comment, depuis la classe fille, je peux appeler la fonctionA ? Ceci sans creer de nouvelle instance de parent.
J'ai essayé de faire un truc du genre

public class fille extends parent {
    public fille() {
        super.fonctionA();
    }
}


mais, super représente une nouvelle occurence de parent

bon vous voyez le souci ? j'tourne en rond ...

Si ya une âme charitable pour m'expliquer ce que je comprend pas, et me donner la marche à suivre, j'en serais très content :)

Bonne Année 2007 à tous !!!!

lundi 1 janvier 2007 à 05:12:15 | Re : Héritage et dialogue entre les classes

LordBob

Membre Club
super représente juste un appel vers la classe mere.
super.fonctionA() est un appel a la méthode fonctionA de la classe mére.

lorsque tu instancie la classe fille tu crée un objet de type fille, mais également (de facon transparente un objet de classe parent). le mot clé super permet l'appel d'une méthode de la classe mere instancier (automatiquement) lors de la création de l'objet fille.

je ne sais pas si j'ai été clair...
Bob...
"Vaut mieux se taire et passer pour un con, que de l'ouvrir et ne laisser aucun doute sur le sujet..."
lundi 1 janvier 2007 à 10:57:24 | Re : Héritage et dialogue entre les classes

deterred

Oui merci c'est très clair.
Donc, en fait comment empecher l'instanciation de ce parent ? ou de faire appel au parent qui a créé la fille ?
Par exemple un code comme celui là ne fonctionne pas :

public class parent {
   
    public int toto;
    public parent () {
       toto = 0;
       fille mafille = new fille();             
       toto = 1;
       mafille.afficheToto();
    }
}

public class fille extends parent {
    public fille() {}
    public void afficheToto() {System.out.println(super.toto);}
}

Comment je peux afficher 1 ? en plus là il y a une erreur de boucle puisqu'il créé indefiniment des parents et des filles !

Merci bcp de votre aide
lundi 1 janvier 2007 à 11:21:26 | Re : Héritage et dialogue entre les classes

LordBob

Membre Club
en fait tu ne peux pas empéché l'instanciation automatique de la classe mére puis que la classe fille est une extension de cette derniere.

pour ton exemple toto est déclaré public donc accessible par toute les classes ou parent est instancier. or quand tu instancie fille, parent n'est pas réellement instancier... (jsui peut etre pas tres clair)

bref pour que les variables de ta classe mere soit accessible dans les classes dérivé il faut utilisé le mot clé protected (protected int toto). ensuite pour pouvoir accédé a ta variable toto dans la classe fille, tu fais simplement toto = ....
tu n'as pas besoin d'utiliser le super. car une fille c en gros la meme chose qu'une classe mere mais complété.
par exemple

class A
{
int toto;
...
public void aa()
{}
}

class B extends A
{
int c;
...
public void bb()
{}
}

est équivalent a:

class B
{
int toto;
int c;
...
public void aa()
{}

public void bb()
{}
}

le mot clé super sert en fait à forcé l'appel d'une fonction dans la classe mere. par exemple avec l'exemple precedent:

class A
{
int toto;
...
public void aa()
{}
}

class B extends A
{
int c;
...
public void aa()
{}
}

la fonction aa() de la classe fille est redéfinit et rend impossible l'appelle a la méthode aa() de la classe mere. or si tu fais:

class B extends A
{
int c;
...
public void aa()
{ super.aa(); instructions; }
}

alors quand dans la classe fille tu apels la méthode aa(), cette derniere fait appel a la méthode aa() de la classe mére et continue en effectué les instructions qui suivent...

est-ce que c'est plus clair maintenant?
Bob...
"Vaut mieux se taire et passer pour un con, que de l'ouvrir et ne laisser aucun doute sur le sujet..."
lundi 1 janvier 2007 à 12:11:18 | Re : Héritage et dialogue entre les classes

deterred

Yes je crois que j'ai compris.

Et donc en fait pour répondre à ma question, la seule solution serait d'imbriquer Fille dans Parent. (Plusieurs Filles ont un seul Parent)

public class parent {

    public parent () {
       fille mafille = new fille();          
    }
    public void fonctionA() {
       ...
    }

    public class fille {
        public fille() {
          ...
        }
    }

}


lundi 1 janvier 2007 à 12:40:35 | Re : Héritage et dialogue entre les classes

LordBob

Membre Club
non. tu fais un héritage et toutes les propriétés et méthode de ta classe mére seront dupliqué dans ta classe fille
Bob...
"Vaut mieux se taire et passer pour un con, que de l'ouvrir et ne laisser aucun doute sur le sujet..."


Cette discussion est classée dans : public, class, classes, parent, fille


Répondre à ce message

Sujets en rapport avec ce message

pb de variables et fonctions [ par one_piece ] bonjour!!!voila j'ai deux classes:-public class SaisieEB2V extends JFra gestion des evenements dans une jtable [ par hm06 ] HELP!!!!! s'il vout plait g besoin de quelqu'un pour m'aider!!! j'ai une jtable qui liste des données provenant d'un ResultSet. Quand j'edite une cell Pb de classloader [recuperer l'exec. dune class...] [ par Syruis ] Bonjour je cherche a recuperer le resultat de l'execution d'une class mais a mon grand malheur je galère .. la seule methode bien ki ma paru fesable c Image dans une JinternalFrame [ par killercece ] Bonjour je souhaite pouvoir mettre des images dans une jinternalframe. j ai tout essayer mais y a rien a faire ca ouvre la jinternalframe mais pas d i Appel de classes semblables [ par colruyt ] Bonjour à tous,Voici le problème qui se pose à moi :Dans ma classe principale , je fait appel à 2 classes et chacunes de celle-ci affiche le contenu d problèmes de classes [ par Waaagh ] Comment ca se fait que j'arrive pas a faire compiler ce programme? je le met dans un fichier animal.java et le compil m'insulte en me disant qu'il "ca Problème avec un Keylistener [ par subichan ] Bonjour tout le monde,j'ai le probleme suivant :J'ai defini ma class comme telle: public class Nom extends JFrame implements KeyListener {...et j'obti Problème avec un Keylistener [ par subichan ] Bonjour tout le monde,j'ai le probleme suivant :J'ai defini ma class comme telle: public class Nom extends JFrame implements KeyListener {...et j'obti Problème avec un JScrollPane et JTextArea... [ par boyboy ] Bonjour,voici mon problème :j'ai 2 classes : class Interface extends JFrame (c'est la classe principale)class QueuePanel extends JTextAreaJe souhaite throws [ par sheorogath ] j'ai un petit probleme :j'ai finnis un livre sur le java et je voudrais mettre en application ce que je sais faire donc j'ai voulu creer une sorte d'e


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 9,937 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales