Default & protected

alonsyl Messages postés 348 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 6 novembre 2008 - 2 janv. 2006 à 21:08
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 3 janv. 2006 à 17:17
bonjour,

je ne vois pas bien les differences qui existent entre un membres declare en "protected" et un membre sans declaration (=> default).

pourriez-vous m'expliquez cela de maniere intelligible ?

merci a vous,

alonsyl

4 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
3 janv. 2006 à 07:47
Salut,

Un membre déclaré en protected est visible uniquement dans la classe où il est déclaré et dans toutes les classes héritées de celle-ci.
Un membre déclaré sans qualificateurs (on le dit "ami") et visible partout dans le package contenant la classe.

_____________________________________________________________________
Avant de poster un message sur le forum, prière de lire http://www.vbfrance.com/forum.v2.as%3C/body
0
alonsyl Messages postés 348 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 6 novembre 2008 12
3 janv. 2006 à 11:55
il me semblait que protected comme default etaient accessibles par toutes les classes du meme package. je crois que la difference est au niveau de l'heritage (mais je ne sais pas bien ou car je ne suis pas assez bon en anglais).

pour info, j'ai teste le code suivant qui fonctionne normalement :

fichier Tata.java :
package pkg1;
public class Tata {
public static void main(String[] args) {
Toto ooo = new Toto();
}
}

fichier Toto.java :
package pkg1;
public class Toto {
protected Toto() {
System.out.println("OK");
}
}

le constructeur de Toto est en "protected" mais j'arrive tout de meme a l'appeller depuis "Tata.java".

pourrais-tu me dire ou je me trompe et eclaircir mes zones d'obscurite (notamment vis a vis de l'heritage) ?

merci a toi DKS,

alonsyl
0
alonsyl Messages postés 348 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 6 novembre 2008 12
3 janv. 2006 à 16:53
j'ai trouve une reponse sur le site :
http://www.infres.enst.fr/~charon/coursJava/glossaire.html
champ d'une classe est protégé si on lui a affecté le modificateur de visibilité <TT>protected</TT>. Un champ protégé d'une classe <TT>A</TT> est toujours visible à l'intérieur de son paquetage. A l'extérieur du paquetage de <TT>A</TT>, considérons une classe <TT>B</TT> qui hérite de <TT>A</TT> ; un champ protégé de <TT>A</TT> est hérité par <TT>B</TT> et visible directement dans <TT>B</TT> (au travers de la référence implicite <TT>this</TT>
) et visibles également au travers d'instances de <TT>B</TT> ou de sous-classes de <TT>B</TT> définies dans <TT>B</TT> ; il n'est pas visible dans d'autres conditions.

je crois comprendre que protected et default sont visible de n'importe quelle class du meme package.
ces champs ne suivent pas lors de l'instanciation a partir d'un autre package cependant ; les champs protected peuvent etre herites a partir d'un package different.

merci a toi,

alonsyl
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
3 janv. 2006 à 17:17
Arf, j'y étais presque ;) Y me manquait pas grand chose en fait ;)

_____________________________________________________________________
Avant de poster un message sur le forum, prière de lire ceci :

http://www.vbfrance.com/forum.v2.aspx?ID=627915
0
Rejoignez-nous