[Langage] diverses choses concernant la visibilite
Bonjour les gens,
Bon comme on est vendredi et que je m'ennuie j'ai deux questions existentielles qui me turlupinent.
NDLR: tout les tests ont ete fait avec un JDK 1.6 a jour de ses updates.
Question 1: Vous trouvez normal que ce code fonctionne ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| public class C
{
private String name;
public C()
{
name = "C";
}
public void affiche(C aC)
{
System.out.println(aC.name);
}
public String getName()
{
return name;
}
public static void main(String args[])
{
C coucou = new C();
coucou.affiche(coucou);
}
} |
Moi j'etais reste sur l'idee bete que private bah c'etait private a l'instance mais apparemment pas 8O Ca vous choque vous aussi ?
Question 2: Toute mon estime a celui qui
1 - me donne l'output de l'execution (sans tricher, attention je verifierai si vous l'avez fait tourner avant de repondre :mouarf: )
2 - me donne une explication claire et rationnelle, regardant la philosophie objet du pourquoi ca a ete fait comme ca.
3 - me donne l'age du capitaine
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| package dummy;
public class A
{
protected String name;
public A()
{
name = "A";
}
public void affiche(A a)
{
System.out.println(a.name);
System.out.println("inA:" + name);
}
public static void main(String args[])
{
B bidule = new B();
A toto = bidule;
bidule.affiche(bidule);
toto.affiche(bidule);
bidule.affiche(toto);
toto.affiche(toto);
}
}
package dummy;
public class B extends A
{
public String name;
public B()
{
name = "B";
}
public void affiche(B b)
{
System.out.println(b.name);
System.out.println("inB:" + name);
}
public void affiche(A a)
{
System.out.println(a.name);
System.out.println("inB:" + name);
}
} |
Et la reponse c'est vendredi, t'es creve va te coucher n'est pas pas acceptable :mrgreen:
Bulbo ;)