Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
467 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Java] Comment accéder à une donnée de la classe mère??? [Résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java] Comment accéder à une donnée de la classe mère??? [Résolu]

n°143188
zizou
Posté le 23-05-2002 à 13:39:59  profilanswer
 

import java.util.*;
Comment faire pour initialiser uen donnée membre d'une classe abstraire lors de l'instanciation de celle ci???
 
Par exemple j'ai dans un premier temps cette classe :
 
 
import javax.swing.*;
 
public abstract class GestionCommande  {
     
    protected JComponent affichage;
     
    public abstract String verifier();
     
    public JComponent getAffichage() {
        return affichage;
    }
     
}

 
 
et par ailleurs, je veux en creer une instance, pour cela je fais :  
 
GestionCommande inter =  (new GestionCommande() {
    public String verifier() {return "coucou";}
});

 
 
mais si je vais acceder à la donnée affichage il faut faire comment????
car si je fais : affichage = new JLabel(); il compile pas car ne connait pas affichage
et si je fais : private JComponent affichage = new JLabel(); il me creer une nouvelle donnée dans la classe fille crée. (enfin je crois car je suis pas sur d'avoir tout capter à ce niveau)
 
C'est pas encore un coup de super() ??? Mais comme j'ai toujorus du mal avec je me prends la tete sans resoudre mon problème.
 
Merci.

 

[jfdsdjhfuetppo]--Message édité par Zizou le 23-05-2002 à 14:42:59--[/jfdsdjhfuetppo]

mood
Publicité
Posté le 23-05-2002 à 13:39:59  profilanswer
 

n°143196
RiffRaff
I'm not your boy toy !
Posté le 23-05-2002 à 13:51:08  profilanswer
 

Instancier une classe abstraite !!!!
Ca me parait louche

n°143203
benou
Posté le 23-05-2002 à 14:11:44  profilanswer
 

RiffRaff a écrit a écrit :

Instancier une classe abstraite !!!!
Ca me parait louche  




il l'instancit pas : il créé une classe interne anonyme héritant de sa classe abstraite.


---------------
ma vie, mon oeuvre - HomePlayer
n°143204
benou
Posté le 23-05-2002 à 14:12:31  profilanswer
 

sinon, j'ai pas compris à quel endroit tu voulais récupéré ta variable affichage (qui n'a pas été instancié, soit dit en passant)


---------------
ma vie, mon oeuvre - HomePlayer
n°143209
benou
Posté le 23-05-2002 à 14:24:08  profilanswer
 

j'ai peut être compris ce que tu voulais faire ... tu peux faire ca avec un "bloc" qui sert de constructeur aux classes internes anonymes.

Code :
  1. GestionCommande inter =  new GestionCommande() {
  2.    {
  3.       affichage = new JLabel("truc" );
  4.    }
  5.    public String verifier() {return "coucou";}
  6. };


ensuite, tu dois opuvoir accéder à ta variable affichage en fesant ca :
 

Code :
  1. inter.getAffichage();


---------------
ma vie, mon oeuvre - HomePlayer
n°143214
Choubidoud​ou
Just BOUH it !
Posté le 23-05-2002 à 14:28:41  profilanswer
 

Comme ta var n'est pas publique,
il faut que tu fasse une nouvelle méthode  
 
public void setAffichage(JComponent MaNouvelleVal) {  
   affichage=ManouvelleVal    
   }  
 
et dans ton autre classe tu appelles setAffichage
 
enfin c'est le principe!
 
C'est normale que tu y accede pas directement vu qu'elle n'est pas  publique

 

[jfdsdjhfuetppo]--Message édité par Choubidoudou le 23-05-2002 à 14:30:31--[/jfdsdjhfuetppo]


---------------
Just BOUH it !
n°143220
zizou
Posté le 23-05-2002 à 14:30:24  profilanswer
 

benou a écrit a écrit :

sinon, j'ai pas compris à quel endroit tu voulais récupéré ta variable affichage (qui n'a pas été instancié, soit dit en passant)  




 
dans la création de mon inner classe : en fait je veux pas la récuperer mais l'instancier justement
 
Mias le problème vient pas du fait que c'est une classe interne mais du fait que je sais pas comment on accéde dans une classe fille à une variable d'une classe mère qd celle ci est déclarée en protected.
Je voudrais y acceder directement, et non pas passer par un constructeur ou un mutateur.

n°143224
benou
Posté le 23-05-2002 à 14:33:02  profilanswer
 

ben si elle est protected, tu y accèdes normalement ... en mettant son nom.
 
ex:  

Code :
  1. public class A {
  2.    protected String s;
  3. }


et dans un autre fichier

Code :
  1. public class B extends A {
  2.    public B() {
  3.       s = "coucou";
  4.    }
  5. }


c'est le principe des attributs "protected"


---------------
ma vie, mon oeuvre - HomePlayer
n°143231
benou
Posté le 23-05-2002 à 14:35:31  profilanswer
 

ok, ca y est j'ai capté : c'est bien ce que choubidoudou disait. Tu veux accéder depuis l'extérieur à ta variable.
 
Si elle est déclarée protected, tu ne peux y accéder que dans la classe et les sous-classes.
Si tu veux y accéder depuis l'extérieur, tu dois la rendre publique, mais c'est pas propre.
 
Pour faire propre, il faut que tu fasse une méthode set comme choibi te le disait


---------------
ma vie, mon oeuvre - HomePlayer
n°143233
zizou
Posté le 23-05-2002 à 14:36:14  profilanswer
 

Choubidoudou a écrit a écrit :

Comme ta var n'est pas publique,
il faut que tu fasse une nouvelle méthode  
 
public void setAffichage(JComponent MaNouvelleVal) {  
   affichage=ManouvelleVal    
   }  
 
et dans ton autre classe tu appelles setAffichage
 
enfin c'est le principe!
 
C'est normale que tu y accede pas directement vu qu'elle n'est pas  publique  
 
 




 
ben non elle est protected donc je peux y acceder normalement!!!

mood
Publicité
Posté le 23-05-2002 à 14:36:14  profilanswer
 

n°143234
benou
Posté le 23-05-2002 à 14:36:36  profilanswer
 

Zizou a écrit a écrit :

 
Je voudrais y acceder directement



la question est : depuis où tu veux y accéder ?


---------------
ma vie, mon oeuvre - HomePlayer
n°143237
Choubidoud​ou
Just BOUH it !
Posté le 23-05-2002 à 14:38:43  profilanswer
 

Oui désolée, j'avais cru voir private dans un premier temps...mais il me semble qu'il faut faire ca quand meme...comme Benou le dit

 

[jfdsdjhfuetppo]--Message édité par Choubidoudou le 23-05-2002 à 14:41:08--[/jfdsdjhfuetppo]


---------------
Just BOUH it !
n°143238
gfive
Posté le 23-05-2002 à 14:39:12  profilanswer
 

Zizou a écrit a écrit :

 
 
ben non elle est protected donc je peux y acceder normalement!!!  




 
 
Uniquement depuis les classes du même package.

n°143243
zizou
Posté le 23-05-2002 à 14:41:50  profilanswer
 

benou a écrit a écrit :

 
la question est : depuis où tu veux y accéder ?  




 
C'est bon je connaissais pas comment marchait les constructeurs pour les classes internes anonymes, donc ta réponse avec le bloc me convient parfaitement, et je t'en remercie!!!
 
Merci beaucoup!!!

n°143294
benou
Posté le 23-05-2002 à 15:18:38  profilanswer
 
n°143296
benou
Posté le 23-05-2002 à 15:19:07  profilanswer
 

gfive a écrit a écrit :

 
Uniquement depuis les classes du même package.  




bha non, c'est quand tu mets pas de modifier ca ....


---------------
ma vie, mon oeuvre - HomePlayer
n°143331
Choubidoud​ou
Just BOUH it !
Posté le 23-05-2002 à 15:39:00  profilanswer
 

benou a écrit a écrit :

juste pour info : http://penserenjava.free.fr/pens/indexMain_9&2.htm  




Sympa le lien!
Merci!


---------------
Just BOUH it !
n°143697
gfive
Posté le 24-05-2002 à 08:57:36  profilanswer
 

benou a écrit a écrit :

 
bha non, c'est quand tu mets pas de modifier ca ....  




 
Dans les specs du language :  
 
6.6.1 Determining Accessibility
 
    * A package is always accessible.
    * If a class or interface type is declared public, then it may be accessed by any code, provided that the compilation unit (§7.3) in which it is declared is observable. If a top level class or interface type is not declared public, then it may be accessed only from within the package in which it is declared.
    * An array type is accessible if and only if its element type is accessible.
    * A member (class, interface, field, or method) of a reference (class, interface, or array) type or a constructor of a class type is accessible only if the type is accessible and the member or constructor is declared to permit access:
          o If the member or constructor is declared public, then access is permitted. All members of interfaces are implicitly public.
          o Otherwise, if the member or constructor is declared protected, then access is permitted only when one of the following is true:
                      # Access to the member or constructor occurs from within the package containing the class in which the protected member or constructor is declared.
                # Access is correct as described in §6.6.2.
          o Otherwise, if the member or constructor is declared private, then access is permitted if and only if it occurs within the body of the top level class (§7.6) that encloses the declaration of the member.
    o Otherwise, we say there is default access, which is permitted only when the access occurs from within the package in which the type is declared.
 
 
6.6.2 Details on protected Access
A protected member or constructor of an object may be accessed from outside the package in which it is declared only by code that is responsible for the implementation of that object.
 
 
 
Enfin, c'est un joyeux bordel, quoi! :D

n°143711
benou
Posté le 24-05-2002 à 09:59:32  profilanswer
 

Citation :

if the member or constructor is declared protected, then access is permitted only when one of the following is true:  
  # Access to the member or constructor occurs from within the package containing the class in which the protected member or constructor is declared.


 
:ouch: :??:
 
j'avais jamais entendu parlé de ca ... c'est pas logique du tout !!!! je vais vérifier ca de suite !!!


---------------
ma vie, mon oeuvre - HomePlayer
n°143716
benou
Posté le 24-05-2002 à 10:05:44  profilanswer
 

je suis dégouté : ca marche ...
:eek2:

Citation :

package testprotected;
 
public class A {
   protected String s;
   public A() { s = "initialisé dans A"; }
   public String toString() {return "s = " + s;}
}


 

Citation :

package testprotected;
 
public class B {
   public static void main (String[] args) {
      A a = new A();
      a.s = "modifié dans B";
      System.out.println(a);
   }
}


 
ca compile ( :??: ) et à l'execution, ca affiche :

Code :
  1. s = modifié dans B


 
je suis sur le cul là !


---------------
ma vie, mon oeuvre - HomePlayer
n°143738
gfive
Posté le 24-05-2002 à 10:31:29  profilanswer
 

benou a écrit a écrit :

je suis dégouté : ca marche ...
:eek2:
 
je suis sur le cul là !  




 
Beaucoup de choses encore à apprendre tu as, mon jeune Padawan!! :D:D
 
(Ouais, je suis allé voir l'épisode 2 hier soir, c'est une bouse! :D

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Java] Comment accéder à une donnée de la classe mère??? [Résolu]

 

Sujets relatifs
[JAVA] comment faire pour creer un TextField pour un password[java]repertoires et disques
[C++] comment locker un fichier (Classe MFC)[JAVA] Question OutputStream
[java] replaceAll[ Java ] Chat, protocole SIRC
ouvrir un document avec word ou ppt depuis java (heelllllp!!!)[JAVA] Utilité des layouts ?
[Java] petit probleme pour lancer un exe via java[JAVA] Repaint ne marche pas :(((( [Resolu]
Plus de sujets relatifs à : [Java] Comment accéder à une donnée de la classe mère??? [Résolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR