A propos des inner class, et des inner class statiques

A propos des inner class, et des inner class statiques - Java - Programmation

Marsh Posté le 21-08-2002 à 11:54:06    

Voilà :

Code :
  1. public class A {
  2.    private Object monObject;
  3.    // ... blabla ...
  4.    public class B {
  5.       private Object monObject;
  6.       public B() {
  7.          // ...
  8.       }
  9.    }
  10. }


Comment accéder depuis B() à l'attribut de la classe A ?


Message édité par bobuse le 21-08-2002 à 18:24:42
Reply

Marsh Posté le 21-08-2002 à 11:54:06   

Reply

Marsh Posté le 21-08-2002 à 12:13:10    

bobuse a écrit a écrit :

Voilà :

Code :
  1. public class A {
  2.    private Object monObject;
  3.    // ... blabla ...
  4.    public class B {
  5.       private Object monObject;
  6.       public B() {
  7.          // ...
  8.       }
  9.    }
  10. }


Comment accéder depuis B() à l'attribut de la classe A ?




 
Ta classe B n'est visible que dans le code de ta classe A....
si t'as une methode A() dans A tu pourras y acceder en faisant new B().B() tout simplement...


---------------
XBox? http://www.gamertagdatabase.com
Reply

Marsh Posté le 21-08-2002 à 12:14:14    

Tu peux plus. Il faut mettre protected pour monObjet et changer le nom de monObjet dans la classe B, pour quelque chose style : monDeuxièmeObjet.


---------------
Le site de ma maman
Reply

Marsh Posté le 21-08-2002 à 12:15:26    


De toutes façon ce code est un peu moisi....
 
 
Que cherches tu a faire?
 
 


---------------
XBox? http://www.gamertagdatabase.com
Reply

Marsh Posté le 21-08-2002 à 12:15:59    

therier a écrit a écrit :

 
 
Ta classe B n'est visible que dans le code de ta classe A....
si t'as une methode A() dans A tu pourras y acceder en faisant new B().B() tout simplement...



:heink:

Reply

Marsh Posté le 21-08-2002 à 12:16:26    

Cherrytree a écrit a écrit :

Tu peux plus. Il faut mettre protected pour monObjet et changer le nom de monObjet dans la classe B, pour quelque chose style : monDeuxièmeObjet.




Ha bon ! ci pourri  :(

Reply

Marsh Posté le 21-08-2002 à 12:18:13    

protected est justement là pour que la classe fille et ses suivantes ou ses soeurs, puissent travailler sur monObjet.


---------------
Le site de ma maman
Reply

Marsh Posté le 21-08-2002 à 12:19:09    

une inner class qui est publique c'est n'importe quoi


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 21-08-2002 à 12:20:01    

DarkLord a écrit a écrit :

une inner class qui est publique c'est n'importe quoi



le pur darklord style is back ! :D

Reply

Marsh Posté le 21-08-2002 à 12:20:15    

Oups, j'avais pas vu que c'était une inner class : je raconte n'importe quoi depuis tout à l'heure.


---------------
Le site de ma maman
Reply

Marsh Posté le 21-08-2002 à 12:20:15   

Reply

Marsh Posté le 21-08-2002 à 12:20:58    

Je suis une sous-merde. :jap:


---------------
Le site de ma maman
Reply

Marsh Posté le 21-08-2002 à 12:21:35    

DarkLord a écrit a écrit :

une inner class qui est publique c'est n'importe quoi




 
Ben non, c public pour la classe qui englobe le tout!  :D  
 
Bon, ok je sors! :D  
 
Le seul interet de faire une inner classe, c'est de creer des objet qui ne seront maniés que par les instances de ta classe englobante. En l'occurrence mettre public c rigolo mais ça change pas grand chose à la semoule!  :D


---------------
XBox? http://www.gamertagdatabase.com
Reply

Marsh Posté le 21-08-2002 à 12:22:42    

therier a écrit a écrit :

 
 
Ben non, c public pour la classe qui englobe le tout!  :D  
 
Bon, ok je sors! :D  
 
Le seul interet de faire une inner classe, c'est de creer des objet qui ne seront maniés que par les instances de ta classe englobante. En l'occurrence mettre public c rigolo mais ça change pas grand chose à la semoule!  :D  




 
surtout que si tu regardes tes .class générés il y a deux fichier séparés ...

Reply

Marsh Posté le 21-08-2002 à 12:26:42    

DarkLord a écrit a écrit :

 
 
surtout que si tu regardes tes .class générés il y a deux fichier séparés ...




 
oui, c juste au niveau programmation que ca change qqchose...
 
 


---------------
XBox? http://www.gamertagdatabase.com
Reply

Marsh Posté le 21-08-2002 à 12:29:28    

Moi si je fais des inner class, c'est juste pour limiter le nombre de fichier (43 pour l'instant, pour 80 classes) !
public, c'est pour pouvoir y accéder depuis une autre classe quand même !
 
Je fais vraiment n'importe quoi ?

Reply

Marsh Posté le 21-08-2002 à 12:30:02    

si ta raison est d'avoir moins de fichier OUI OUI et OUUIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII


Message édité par darklord le 21-08-2002 à 12:30:11
Reply

Marsh Posté le 21-08-2002 à 12:30:11    

oui
les packages c pas pour les chiens
:D

Reply

Marsh Posté le 21-08-2002 à 12:31:24    

bobuse a écrit a écrit :

Moi si je fais des inner class, c'est juste pour limiter le nombre de fichier (43 pour l'instant, pour 80 classes) !
public, c'est pour pouvoir y accéder depuis une autre classe quand même !
 
Je fais vraiment n'importe quoi ?




 
heu...oui!  :D  
 


---------------
XBox? http://www.gamertagdatabase.com
Reply

Marsh Posté le 21-08-2002 à 12:35:38    

+1


---------------
Le site de ma maman
Reply

Marsh Posté le 21-08-2002 à 12:39:16    

ok les packages et tout et tout, je m'en sers.
Mais bon ... ok ok ... je suis pas encore au top de l'organisation. :ange:  
C'est-à-dire que je me suis un peu laissé dépasser par la taille de mon projet, vu qu'en plus j'ai découvert Java en même temps, j'ai chopé (essayer) les bonnes habitudes à la volée ...
 
Enfin bon, les inner class comme celle-là, je les ai pas bocoup utilisées, en fait surtout pour définir des Listener ou des petites boîtes de dialogue à la con (confirmation ...) .
 
Bon, faudra que je repense tout ça ... plus tard !
 
Merci en tout cas !


Message édité par bobuse le 21-08-2002 à 12:40:04
Reply

Marsh Posté le 21-08-2002 à 12:45:17    

En rédigeant ce topic, je me disais bien que c'était un peu crad aussi  :D  
C'est en sciant que Léonard de Vinci

Reply

Marsh Posté le 21-08-2002 à 13:30:31    

[:xp1700]

Reply

Marsh Posté le 21-08-2002 à 14:19:36    

bobuse a écrit a écrit :

Voilà :

Code :
  1. public class A {
  2.    private Object monObject;
  3.    // ... blabla ...
  4.    public class B {
  5.       private Object monObject;
  6.       public B() {
  7.          // ...
  8.       }
  9.    }
  10. }


Comment accéder depuis B() à l'attribut de la classe A ?




 
j'ai pas le courage de tout lire, mais la répons eest ca :  
 

Code :
  1. public class A {
  2.    private Object monObject;
  3.    // ... blabla ...
  4.    public class B {
  5.       private Object monObject;
  6.       public B() {
  7.          System.out.println(A.this.monObject);
  8.          // ...
  9.       }
  10.    }
  11. }

Reply

Marsh Posté le 21-08-2002 à 14:21:24    

DarkLord a écrit a écrit :

une inner class qui est publique c'est n'importe quoi




bha nonm !
 
regarde java.util.Map.Entry !

Reply

Marsh Posté le 21-08-2002 à 14:55:30    

benou a écrit a écrit :

 
bha nonm !
 
regarde java.util.Map.Entry !




 
oui, mais là elle est static!  :D  
 
Ca veut dire que tu pourras créer cet objet via une classe et non via une INSTANCE de classe.
 


---------------
XBox? http://www.gamertagdatabase.com
Reply

Marsh Posté le 21-08-2002 à 14:56:32    

therier a écrit a écrit :

 
 
oui, mais là elle est static!  :D  
 
Ca veut dire que tu pourras créer cet objet via une classe et non via une INSTANCE de classe.
 
 




 
 :jap: * 100000
 
 
benou >>>  :kaola:

Reply

Marsh Posté le 21-08-2002 à 15:02:21    

benou a écrit a écrit :

 
 
j'ai pas le courage de tout lire, mais la répons eest ca :  
 

Code :
  1. public class A {
  2.    private Object monObject;
  3.    // ... blabla ...
  4.    public class B {
  5.       private Object monObject;
  6.       public B() {
  7.          System.out.println(A.this.monObject);
  8.          // ...
  9.       }
  10.    }
  11. }






 :jap:  :jap:  :jap: Je garde dans l'idée que cette techmique n'est pas la plus propre. Mais tu as satisfait ma curiosité ! Je me disais bien aussi, que ça devait être possible ! Merci.

Reply

Marsh Posté le 21-08-2002 à 15:05:30    

bobuse a écrit a écrit :

 
 :jap:  :jap:  :jap: Je garde dans l'idée que cette techmique n'est pas la plus propre. Mais tu as satisfait ma curiosité ! Je me disais bien aussi, que ça devait être possible ! Merci.




 
 :D  :D  :D  
 
Depuis tout à l'heure j'avais compris le contraire!!!
 
 :D  :D  :D  


---------------
XBox? http://www.gamertagdatabase.com
Reply

Marsh Posté le 21-08-2002 à 15:12:03    

therier a écrit a écrit :

 
 
 :D  :D  :D  
 
Depuis tout à l'heure j'avais compris le contraire!!!
 
 :D  :D  :D  
 




c'est bien ce qu'il m'avait semblé  :D

Reply

Marsh Posté le 21-08-2002 à 15:20:27    

therier a écrit a écrit :

 
Ca veut dire que tu pourras créer cet objet via une classe et non via une INSTANCE de classe.




je connais pas les classes static ... tu explique ?

Reply

Marsh Posté le 21-08-2002 à 15:30:23    

benou a écrit a écrit :

 
je connais pas les classes static ... tu explique ?



:sol:

Reply

Marsh Posté le 21-08-2002 à 16:45:53    

benou a écrit a écrit :

 
je connais pas les classes static ... tu explique ?




 
static sur la classe signifie que la classe peut être utilisé sans instanciation.
 
c'est plus facile a voir pour une methode:
 

Code :
  1. public classe CompteurALaCon {
  2. static int count1 = 0;
  3. int count2 = 0;
  4. public static int inc1(){
  5. return count1++;
  6. }
  7. public int inc2(){
  8. return count2++;
  9. }
  10. }


 
dans un main, tu peux faire:
 

Code :
  1. System.out.println("1="+CompteurALaCon.inc1());
  2. System.out.println("2="+CompteurALaCon.inc1());
  3. System.out.println("1="+new CompteurALaCon().inc2()); 
  4. System.out.println("2="+new CompteurALaCon().inc2());


 
ça donne:
 
1
2
1
1
 
par exemple...


---------------
XBox? http://www.gamertagdatabase.com
Reply

Marsh Posté le 21-08-2002 à 16:55:09    

[:xp1700]

Reply

Marsh Posté le 21-08-2002 à 16:59:09    

bha oui merci, je sais ce que c'est qu'une méthode static :/
 
je te demandais ce que c'étais qu'une CLASSE static. Je vois pas en quoi ca peut être la même chose que pour une methode methode.
 
et comment une classe peut être utilisée sans instanciation ? (à part ses méthodes static).
 
et puis les objets Map.Entry, on les utilises comme des instances ...
 
je omprend pas !

Reply

Marsh Posté le 21-08-2002 à 16:59:45    

DarkLord a écrit a écrit :

 [:xp1700]  




:non:

Reply

Marsh Posté le 21-08-2002 à 17:00:55    

Reply

Marsh Posté le 21-08-2002 à 17:01:33    

ceci dit une classe statique ca n'existe pas ... par contre une inner class peut etre statique mais c'est différent.
 
A+

Reply

Marsh Posté le 21-08-2002 à 17:08:50    

DarkLord a écrit a écrit :

ceci dit une classe statique ca n'existe pas ... par contre une inner class peut etre statique mais c'est différent.
 
A+




 
 :jap:


---------------
XBox? http://www.gamertagdatabase.com
Reply

Marsh Posté le 21-08-2002 à 17:08:55    

Ha ok ! une inner class static ! Ca marche.
C'est que je connaissais pas Map.Entry, par contre je connais Point2D.Float et du coup là, je comprends ! ok ! :jap:

Reply

Marsh Posté le 21-08-2002 à 17:09:52    

benou a écrit a écrit :

et puis les objets Map.Entry, on les utilises comme des instances ...
 
je omprend pas !




 
Tu fais un new dessus?  :)  
 
donc: pas d'instance!  :hap:


---------------
XBox? http://www.gamertagdatabase.com
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed