Une donnée protected n'est pas accessible depuis une classe externe ou
un programme main(). Est-ce que la compilation de la classe doit
provoquer une erreur? Pourquoi je continue à y avoir accès lorsque je
lance le programme?
Merci. Léa
import java.lang.*;
class A{
private int x;
public int y;
protected int z;
public A(){
x=1;
y=2;
z=3;
}
public class Prob1 {
public static void main (String[] args) {
A o1 = new A();
System.out.println(o1.x);
System.out.println(o1.y);
System.out.println(o1.z);
}
}
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Didier Fradet
Bonjour, Bonjour,
Une donnée protected n'est pas accessible depuis une classe externe ou un programme main(). Est-ce que la compilation de la classe doit provoquer une erreur? Pourquoi je continue à y avoir accès lorsque je lance le programme?
Un attribut déclaré protected est accessible par les classes filles
(héritage) et par les classes du même package. Comme tu n'as pas précisé de package dans ta classe, la JVM considère qu'elle est dans un package par défaut, celui de ton répertoire. Par conséquent, si ta classe Prob1 est dans le même répertoire, elle est dans le même package (même raison) et il est donc normal que tu accèdes à l'attribut déclaré protected.
Didier
Merci. Léa
import java.lang.*;
class A{ private int x; public int y; protected int z;
public A(){ x=1; y=2; z=3; }
public class Prob1 { public static void main (String[] args) { A o1 = new A(); System.out.println(o1.x); System.out.println(o1.y); System.out.println(o1.z); } }
Bonjour,
Bonjour,
Une donnée protected n'est pas accessible depuis une classe externe ou
un programme main(). Est-ce que la compilation de la classe doit
provoquer une erreur? Pourquoi je continue à y avoir accès lorsque je
lance le programme?
Un attribut déclaré protected est accessible par les classes filles
(héritage) et par les classes du même package. Comme tu n'as pas précisé
de package dans ta classe, la JVM considère qu'elle est dans un package
par défaut, celui de ton répertoire. Par conséquent, si ta classe Prob1
est dans le même répertoire, elle est dans le même package (même raison)
et il est donc normal que tu accèdes à l'attribut déclaré protected.
Didier
Merci. Léa
import java.lang.*;
class A{
private int x;
public int y;
protected int z;
public A(){
x=1;
y=2;
z=3;
}
public class Prob1 {
public static void main (String[] args) {
A o1 = new A();
System.out.println(o1.x);
System.out.println(o1.y);
System.out.println(o1.z);
}
}
Une donnée protected n'est pas accessible depuis une classe externe ou un programme main(). Est-ce que la compilation de la classe doit provoquer une erreur? Pourquoi je continue à y avoir accès lorsque je lance le programme?
Un attribut déclaré protected est accessible par les classes filles
(héritage) et par les classes du même package. Comme tu n'as pas précisé de package dans ta classe, la JVM considère qu'elle est dans un package par défaut, celui de ton répertoire. Par conséquent, si ta classe Prob1 est dans le même répertoire, elle est dans le même package (même raison) et il est donc normal que tu accèdes à l'attribut déclaré protected.
Didier
Merci. Léa
import java.lang.*;
class A{ private int x; public int y; protected int z;
public A(){ x=1; y=2; z=3; }
public class Prob1 { public static void main (String[] args) { A o1 = new A(); System.out.println(o1.x); System.out.println(o1.y); System.out.println(o1.z); } }
Lea
Merci Didier.
Une donnée protected n'est pas accessible depuis une classe externe ou un programme main(). Est-ce que la compilation de la classe doit provoquer une erreur? Pourquoi je continue à y avoir accès lorsque je lance le programme?
Un attribut déclaré protected est accessible par les classes filles
(héritage) et par les classes du même package. Comme tu n'as pas précisé de package dans ta classe, la JVM considère qu'elle est dans un package par défaut, celui de ton répertoire. Par conséquent, si ta classe Prob1 est dans le même répertoire, elle est dans le même package (même raison) et il est donc normal que tu accèdes à l'attribut déclaré protected.
En fait qu'aurait-il fallu que je rajoute dans mes deux fichiers (A et Prob1) pour qu'il n'y ait pas d'accès possible à la donnée protected (comme cela devrait être le cas normalement, non?)
Léa
Didier
Merci. Léa
import java.lang.*;
class A{ private int x; public int y; protected int z;
public A(){ x=1; y=2; z=3; }
public class Prob1 { public static void main (String[] args) { A o1 = new A(); System.out.println(o1.x); System.out.println(o1.y); System.out.println(o1.z); } }
Merci Didier.
Une donnée protected n'est pas accessible depuis une classe externe ou
un programme main(). Est-ce que la compilation de la classe doit
provoquer une erreur? Pourquoi je continue à y avoir accès lorsque je
lance le programme?
Un attribut déclaré protected est accessible par les classes filles
(héritage) et par les classes du même package. Comme tu n'as pas précisé
de package dans ta classe, la JVM considère qu'elle est dans un package
par défaut, celui de ton répertoire. Par conséquent, si ta classe Prob1
est dans le même répertoire, elle est dans le même package (même raison)
et il est donc normal que tu accèdes à l'attribut déclaré protected.
En fait qu'aurait-il fallu que je rajoute dans mes deux fichiers (A et
Prob1) pour qu'il n'y ait pas d'accès possible à la donnée protected
(comme cela devrait être le cas normalement, non?)
Léa
Didier
Merci. Léa
import java.lang.*;
class A{
private int x;
public int y;
protected int z;
public A(){
x=1;
y=2;
z=3;
}
public class Prob1 {
public static void main (String[] args) {
A o1 = new A();
System.out.println(o1.x);
System.out.println(o1.y);
System.out.println(o1.z);
}
}
Une donnée protected n'est pas accessible depuis une classe externe ou un programme main(). Est-ce que la compilation de la classe doit provoquer une erreur? Pourquoi je continue à y avoir accès lorsque je lance le programme?
Un attribut déclaré protected est accessible par les classes filles
(héritage) et par les classes du même package. Comme tu n'as pas précisé de package dans ta classe, la JVM considère qu'elle est dans un package par défaut, celui de ton répertoire. Par conséquent, si ta classe Prob1 est dans le même répertoire, elle est dans le même package (même raison) et il est donc normal que tu accèdes à l'attribut déclaré protected.
En fait qu'aurait-il fallu que je rajoute dans mes deux fichiers (A et Prob1) pour qu'il n'y ait pas d'accès possible à la donnée protected (comme cela devrait être le cas normalement, non?)
Léa
Didier
Merci. Léa
import java.lang.*;
class A{ private int x; public int y; protected int z;
public A(){ x=1; y=2; z=3; }
public class Prob1 { public static void main (String[] args) { A o1 = new A(); System.out.println(o1.x); System.out.println(o1.y); System.out.println(o1.z); } }
Didier Fradet
Merci Didier.
Une donnée protected n'est pas accessible depuis une classe externe ou un programme main(). Est-ce que la compilation de la classe doit provoquer une erreur? Pourquoi je continue à y avoir accès lorsque je lance le programme?
Un attribut déclaré protected est accessible par les classes filles
(héritage) et par les classes du même package. Comme tu n'as pas précisé de package dans ta classe, la JVM considère qu'elle est dans un package par défaut, celui de ton répertoire. Par conséquent, si ta classe Prob1 est dans le même répertoire, elle est dans le même package (même raison) et il est donc normal que tu accèdes à l'attribut déclaré protected.
En fait qu'aurait-il fallu que je rajoute dans mes deux fichiers (A et Prob1) pour qu'il n'y ait pas d'accès possible à la donnée protected (comme cela devrait être le cas normalement, non?)
Par exemple tu crées un sous-répertoire essai sans lequel tu places ton fichier A.java :
package essai;
public class A{ private int x; public int y; protected int z;
public A(){ x=1; y=2; z=3; } }
Dans le répertoire parent de essai, tu places ta classe Prob1 :
public class Prob1 { public static void main (String[] args) { essai.A o1 = new essai.A(); System.out.println(o1.x); System.out.println(o1.y); System.out.println(o1.z); } }
et tu compiles (javac Prob1.java). Tu aurasl'erreur :
Prob1.java:5: x has private access in essai.A System.out.println(o1.x); ^ Prob1.java:7: z has protected access in essai.A System.out.println(o1.z); ^ 2 errors
Voilà,
Didier
Léa
Didier
Merci. Léa
import java.lang.*;
class A{ private int x; public int y; protected int z;
public A(){ x=1; y=2; z=3; }
public class Prob1 { public static void main (String[] args) { A o1 = new A(); System.out.println(o1.x); System.out.println(o1.y); System.out.println(o1.z); } }
Merci Didier.
Une donnée protected n'est pas accessible depuis une classe externe
ou un programme main(). Est-ce que la compilation de la classe doit
provoquer une erreur? Pourquoi je continue à y avoir accès lorsque je
lance le programme?
Un attribut déclaré protected est accessible par les classes filles
(héritage) et par les classes du même package. Comme tu n'as pas
précisé de package dans ta classe, la JVM considère qu'elle est dans
un package par défaut, celui de ton répertoire. Par conséquent, si ta
classe Prob1 est dans le même répertoire, elle est dans le même
package (même raison) et il est donc normal que tu accèdes à
l'attribut déclaré protected.
En fait qu'aurait-il fallu que je rajoute dans mes deux fichiers (A et
Prob1) pour qu'il n'y ait pas d'accès possible à la donnée protected
(comme cela devrait être le cas normalement, non?)
Par exemple tu crées un sous-répertoire essai sans lequel tu places ton
fichier A.java :
package essai;
public class A{
private int x;
public int y;
protected int z;
public A(){
x=1;
y=2;
z=3;
}
}
Dans le répertoire parent de essai, tu places ta classe Prob1 :
public class Prob1 {
public static void main (String[] args) {
essai.A o1 = new essai.A();
System.out.println(o1.x);
System.out.println(o1.y);
System.out.println(o1.z);
}
}
et tu compiles (javac Prob1.java). Tu aurasl'erreur :
Prob1.java:5: x has private access in essai.A
System.out.println(o1.x);
^
Prob1.java:7: z has protected access in essai.A
System.out.println(o1.z);
^
2 errors
Voilà,
Didier
Léa
Didier
Merci. Léa
import java.lang.*;
class A{
private int x;
public int y;
protected int z;
public A(){
x=1;
y=2;
z=3;
}
public class Prob1 {
public static void main (String[] args) {
A o1 = new A();
System.out.println(o1.x);
System.out.println(o1.y);
System.out.println(o1.z);
}
}
Une donnée protected n'est pas accessible depuis une classe externe ou un programme main(). Est-ce que la compilation de la classe doit provoquer une erreur? Pourquoi je continue à y avoir accès lorsque je lance le programme?
Un attribut déclaré protected est accessible par les classes filles
(héritage) et par les classes du même package. Comme tu n'as pas précisé de package dans ta classe, la JVM considère qu'elle est dans un package par défaut, celui de ton répertoire. Par conséquent, si ta classe Prob1 est dans le même répertoire, elle est dans le même package (même raison) et il est donc normal que tu accèdes à l'attribut déclaré protected.
En fait qu'aurait-il fallu que je rajoute dans mes deux fichiers (A et Prob1) pour qu'il n'y ait pas d'accès possible à la donnée protected (comme cela devrait être le cas normalement, non?)
Par exemple tu crées un sous-répertoire essai sans lequel tu places ton fichier A.java :
package essai;
public class A{ private int x; public int y; protected int z;
public A(){ x=1; y=2; z=3; } }
Dans le répertoire parent de essai, tu places ta classe Prob1 :
public class Prob1 { public static void main (String[] args) { essai.A o1 = new essai.A(); System.out.println(o1.x); System.out.println(o1.y); System.out.println(o1.z); } }
et tu compiles (javac Prob1.java). Tu aurasl'erreur :
Prob1.java:5: x has private access in essai.A System.out.println(o1.x); ^ Prob1.java:7: z has protected access in essai.A System.out.println(o1.z); ^ 2 errors
Voilà,
Didier
Léa
Didier
Merci. Léa
import java.lang.*;
class A{ private int x; public int y; protected int z;
public A(){ x=1; y=2; z=3; }
public class Prob1 { public static void main (String[] args) { A o1 = new A(); System.out.println(o1.x); System.out.println(o1.y); System.out.println(o1.z); } }
Lea
Merci Didier.
Une donnée protected n'est pas accessible depuis une classe externe ou un programme main(). Est-ce que la compilation de la classe doit provoquer une erreur? Pourquoi je continue à y avoir accès lorsque je lance le programme?
Un attribut déclaré protected est accessible par les classes filles
(héritage) et par les classes du même package. Comme tu n'as pas précisé de package dans ta classe, la JVM considère qu'elle est dans un package par défaut, celui de ton répertoire. Par conséquent, si ta classe Prob1 est dans le même répertoire, elle est dans le même package (même raison) et il est donc normal que tu accèdes à l'attribut déclaré protected.
En fait qu'aurait-il fallu que je rajoute dans mes deux fichiers (A et Prob1) pour qu'il n'y ait pas d'accès possible à la donnée protected (comme cela devrait être le cas normalement, non?)
Par exemple tu crées un sous-répertoire essai sans lequel tu places ton fichier A.java :
package essai;
public class A{ private int x; public int y; protected int z;
public A(){ x=1; y=2; z=3; } }
Dans le répertoire parent de essai, tu places ta classe Prob1 :
public class Prob1 { public static void main (String[] args) { essai.A o1 = new essai.A(); System.out.println(o1.x); System.out.println(o1.y); System.out.println(o1.z); } }
et tu compiles (javac Prob1.java). Tu aurasl'erreur :
Prob1.java:5: x has private access in essai.A System.out.println(o1.x); ^ Prob1.java:7: z has protected access in essai.A System.out.println(o1.z); ^ 2 errors
Voilà,
Didier
Je vais essayer ta solution. Tes explications me semblent très claires :) ... Dans le cas où j'avais laissé mes fichiers dans le même répertoire, en précisant seulement en début de chacun "import java.lang.*;), la JVM aurait considéré mes classes comme faisant parties du même package? Donc en ce qui concerne l'accès, j'aurais eu accès à partir de Prob1 aux données protected, public sauf private, c'est bien ça?
Merci Léa
Léa
Didier
Merci. Léa
import java.lang.*;
class A{ private int x; public int y; protected int z;
public A(){ x=1; y=2; z=3; }
public class Prob1 { public static void main (String[] args) { A o1 = new A(); System.out.println(o1.x); System.out.println(o1.y); System.out.println(o1.z); } }
Merci Didier.
Une donnée protected n'est pas accessible depuis une classe externe
ou un programme main(). Est-ce que la compilation de la classe doit
provoquer une erreur? Pourquoi je continue à y avoir accès lorsque
je lance le programme?
Un attribut déclaré protected est accessible par les classes filles
(héritage) et par les classes du même package. Comme tu n'as pas
précisé de package dans ta classe, la JVM considère qu'elle est dans
un package par défaut, celui de ton répertoire. Par conséquent, si ta
classe Prob1 est dans le même répertoire, elle est dans le même
package (même raison) et il est donc normal que tu accèdes à
l'attribut déclaré protected.
En fait qu'aurait-il fallu que je rajoute dans mes deux fichiers (A et
Prob1) pour qu'il n'y ait pas d'accès possible à la donnée protected
(comme cela devrait être le cas normalement, non?)
Par exemple tu crées un sous-répertoire essai sans lequel tu places ton
fichier A.java :
package essai;
public class A{
private int x;
public int y;
protected int z;
public A(){
x=1;
y=2;
z=3;
}
}
Dans le répertoire parent de essai, tu places ta classe Prob1 :
public class Prob1 {
public static void main (String[] args) {
essai.A o1 = new essai.A();
System.out.println(o1.x);
System.out.println(o1.y);
System.out.println(o1.z);
}
}
et tu compiles (javac Prob1.java). Tu aurasl'erreur :
Prob1.java:5: x has private access in essai.A
System.out.println(o1.x);
^
Prob1.java:7: z has protected access in essai.A
System.out.println(o1.z);
^
2 errors
Voilà,
Didier
Je vais essayer ta solution. Tes explications me semblent très claires
:) ...
Dans le cas où j'avais laissé mes fichiers dans le même répertoire, en
précisant seulement en début de chacun "import java.lang.*;), la JVM
aurait considéré mes classes comme faisant parties du même package?
Donc en ce qui concerne l'accès, j'aurais eu accès à partir de Prob1 aux
données protected, public sauf private, c'est bien ça?
Merci Léa
Léa
Didier
Merci. Léa
import java.lang.*;
class A{
private int x;
public int y;
protected int z;
public A(){
x=1;
y=2;
z=3;
}
public class Prob1 {
public static void main (String[] args) {
A o1 = new A();
System.out.println(o1.x);
System.out.println(o1.y);
System.out.println(o1.z);
}
}
Une donnée protected n'est pas accessible depuis une classe externe ou un programme main(). Est-ce que la compilation de la classe doit provoquer une erreur? Pourquoi je continue à y avoir accès lorsque je lance le programme?
Un attribut déclaré protected est accessible par les classes filles
(héritage) et par les classes du même package. Comme tu n'as pas précisé de package dans ta classe, la JVM considère qu'elle est dans un package par défaut, celui de ton répertoire. Par conséquent, si ta classe Prob1 est dans le même répertoire, elle est dans le même package (même raison) et il est donc normal que tu accèdes à l'attribut déclaré protected.
En fait qu'aurait-il fallu que je rajoute dans mes deux fichiers (A et Prob1) pour qu'il n'y ait pas d'accès possible à la donnée protected (comme cela devrait être le cas normalement, non?)
Par exemple tu crées un sous-répertoire essai sans lequel tu places ton fichier A.java :
package essai;
public class A{ private int x; public int y; protected int z;
public A(){ x=1; y=2; z=3; } }
Dans le répertoire parent de essai, tu places ta classe Prob1 :
public class Prob1 { public static void main (String[] args) { essai.A o1 = new essai.A(); System.out.println(o1.x); System.out.println(o1.y); System.out.println(o1.z); } }
et tu compiles (javac Prob1.java). Tu aurasl'erreur :
Prob1.java:5: x has private access in essai.A System.out.println(o1.x); ^ Prob1.java:7: z has protected access in essai.A System.out.println(o1.z); ^ 2 errors
Voilà,
Didier
Je vais essayer ta solution. Tes explications me semblent très claires :) ... Dans le cas où j'avais laissé mes fichiers dans le même répertoire, en précisant seulement en début de chacun "import java.lang.*;), la JVM aurait considéré mes classes comme faisant parties du même package? Donc en ce qui concerne l'accès, j'aurais eu accès à partir de Prob1 aux données protected, public sauf private, c'est bien ça?
Merci Léa
Léa
Didier
Merci. Léa
import java.lang.*;
class A{ private int x; public int y; protected int z;
public A(){ x=1; y=2; z=3; }
public class Prob1 { public static void main (String[] args) { A o1 = new A(); System.out.println(o1.x); System.out.println(o1.y); System.out.println(o1.z); } }
Didier Fradet
Merci Didier.
Une donnée protected n'est pas accessible depuis une classe externe ou un programme main(). Est-ce que la compilation de la classe doit provoquer une erreur? Pourquoi je continue à y avoir accès lorsque je lance le programme?
Un attribut déclaré protected est accessible par les classes filles
(héritage) et par les classes du même package. Comme tu n'as pas précisé de package dans ta classe, la JVM considère qu'elle est dans un package par défaut, celui de ton répertoire. Par conséquent, si ta classe Prob1 est dans le même répertoire, elle est dans le même package (même raison) et il est donc normal que tu accèdes à l'attribut déclaré protected.
En fait qu'aurait-il fallu que je rajoute dans mes deux fichiers (A et Prob1) pour qu'il n'y ait pas d'accès possible à la donnée protected (comme cela devrait être le cas normalement, non?)
Par exemple tu crées un sous-répertoire essai sans lequel tu places ton fichier A.java :
package essai;
public class A{ private int x; public int y; protected int z;
public A(){ x=1; y=2; z=3; } }
Dans le répertoire parent de essai, tu places ta classe Prob1 :
public class Prob1 { public static void main (String[] args) { essai.A o1 = new essai.A(); System.out.println(o1.x); System.out.println(o1.y); System.out.println(o1.z); } }
et tu compiles (javac Prob1.java). Tu aurasl'erreur :
Prob1.java:5: x has private access in essai.A System.out.println(o1.x); ^ Prob1.java:7: z has protected access in essai.A System.out.println(o1.z); ^ 2 errors
Voilà,
Didier
Je vais essayer ta solution. Tes explications me semblent très claires :) ... Dans le cas où j'avais laissé mes fichiers dans le même répertoire, en précisant seulement en début de chacun "import java.lang.*;), la JVM aurait considéré mes classes comme faisant parties du même package? Donc en ce qui concerne l'accès, j'aurais eu accès à partir de Prob1 aux données protected, public sauf private, c'est bien ça? C'est exactement ça !
Bonne continuation,
Didier
Merci Léa
Léa
Didier
Merci. Léa
import java.lang.*;
class A{ private int x; public int y; protected int z;
public A(){ x=1; y=2; z=3; }
public class Prob1 { public static void main (String[] args) { A o1 = new A(); System.out.println(o1.x); System.out.println(o1.y); System.out.println(o1.z); } }
Merci Didier.
Une donnée protected n'est pas accessible depuis une classe externe
ou un programme main(). Est-ce que la compilation de la classe doit
provoquer une erreur? Pourquoi je continue à y avoir accès lorsque
je lance le programme?
Un attribut déclaré protected est accessible par les classes filles
(héritage) et par les classes du même package. Comme tu n'as pas
précisé de package dans ta classe, la JVM considère qu'elle est dans
un package par défaut, celui de ton répertoire. Par conséquent, si
ta classe Prob1 est dans le même répertoire, elle est dans le même
package (même raison) et il est donc normal que tu accèdes à
l'attribut déclaré protected.
En fait qu'aurait-il fallu que je rajoute dans mes deux fichiers (A
et Prob1) pour qu'il n'y ait pas d'accès possible à la donnée
protected (comme cela devrait être le cas normalement, non?)
Par exemple tu crées un sous-répertoire essai sans lequel tu places
ton fichier A.java :
package essai;
public class A{
private int x;
public int y;
protected int z;
public A(){
x=1;
y=2;
z=3;
}
}
Dans le répertoire parent de essai, tu places ta classe Prob1 :
public class Prob1 {
public static void main (String[] args) {
essai.A o1 = new essai.A();
System.out.println(o1.x);
System.out.println(o1.y);
System.out.println(o1.z);
}
}
et tu compiles (javac Prob1.java). Tu aurasl'erreur :
Prob1.java:5: x has private access in essai.A
System.out.println(o1.x);
^
Prob1.java:7: z has protected access in essai.A
System.out.println(o1.z);
^
2 errors
Voilà,
Didier
Je vais essayer ta solution. Tes explications me semblent très claires
:) ...
Dans le cas où j'avais laissé mes fichiers dans le même répertoire, en
précisant seulement en début de chacun "import java.lang.*;), la JVM
aurait considéré mes classes comme faisant parties du même package?
Donc en ce qui concerne l'accès, j'aurais eu accès à partir de Prob1 aux
données protected, public sauf private, c'est bien ça?
C'est exactement ça !
Bonne continuation,
Didier
Merci Léa
Léa
Didier
Merci. Léa
import java.lang.*;
class A{
private int x;
public int y;
protected int z;
public A(){
x=1;
y=2;
z=3;
}
public class Prob1 {
public static void main (String[] args) {
A o1 = new A();
System.out.println(o1.x);
System.out.println(o1.y);
System.out.println(o1.z);
}
}
Une donnée protected n'est pas accessible depuis une classe externe ou un programme main(). Est-ce que la compilation de la classe doit provoquer une erreur? Pourquoi je continue à y avoir accès lorsque je lance le programme?
Un attribut déclaré protected est accessible par les classes filles
(héritage) et par les classes du même package. Comme tu n'as pas précisé de package dans ta classe, la JVM considère qu'elle est dans un package par défaut, celui de ton répertoire. Par conséquent, si ta classe Prob1 est dans le même répertoire, elle est dans le même package (même raison) et il est donc normal que tu accèdes à l'attribut déclaré protected.
En fait qu'aurait-il fallu que je rajoute dans mes deux fichiers (A et Prob1) pour qu'il n'y ait pas d'accès possible à la donnée protected (comme cela devrait être le cas normalement, non?)
Par exemple tu crées un sous-répertoire essai sans lequel tu places ton fichier A.java :
package essai;
public class A{ private int x; public int y; protected int z;
public A(){ x=1; y=2; z=3; } }
Dans le répertoire parent de essai, tu places ta classe Prob1 :
public class Prob1 { public static void main (String[] args) { essai.A o1 = new essai.A(); System.out.println(o1.x); System.out.println(o1.y); System.out.println(o1.z); } }
et tu compiles (javac Prob1.java). Tu aurasl'erreur :
Prob1.java:5: x has private access in essai.A System.out.println(o1.x); ^ Prob1.java:7: z has protected access in essai.A System.out.println(o1.z); ^ 2 errors
Voilà,
Didier
Je vais essayer ta solution. Tes explications me semblent très claires :) ... Dans le cas où j'avais laissé mes fichiers dans le même répertoire, en précisant seulement en début de chacun "import java.lang.*;), la JVM aurait considéré mes classes comme faisant parties du même package? Donc en ce qui concerne l'accès, j'aurais eu accès à partir de Prob1 aux données protected, public sauf private, c'est bien ça? C'est exactement ça !
Bonne continuation,
Didier
Merci Léa
Léa
Didier
Merci. Léa
import java.lang.*;
class A{ private int x; public int y; protected int z;
public A(){ x=1; y=2; z=3; }
public class Prob1 { public static void main (String[] args) { A o1 = new A(); System.out.println(o1.x); System.out.println(o1.y); System.out.println(o1.z); } }
euler
Didier Fradet wrote:
Bonjour, Bonjour,
[...]
Un attribut déclaré protected est accessible par les classes filles
(héritage) et par les classes du même package. Comme tu n'as pas précisé de package dans ta classe, la JVM considère qu'elle est dans un package par défaut, celui de ton répertoire. Par conséquent, si ta classe Prob1 est dans le même répertoire, elle est dans le même package (même raison) et il est donc normal que tu accèdes à l'attribut déclaré protected.
euh presque... je veux dire que c'est le class loader employé qui définit le package par défaut. Donc deux classes sans déclaration de package seront dans le même package par défaut ssi elle sont chargées par le même class loader. En l'occurence, comme la question a été posée par une dame qui se qualifie elle-même de débutante, il est fort probable qu'elle utilise le class loader qui s'occupe normalement du classpath...
[...]
}
-- add @hotmail.com to my name
Didier Fradet wrote:
Bonjour,
Bonjour,
[...]
Un attribut déclaré protected est accessible par les classes filles
(héritage) et par les classes du même package. Comme tu n'as pas précisé
de package dans ta classe, la JVM considère qu'elle est dans un package
par défaut, celui de ton répertoire. Par conséquent, si ta classe Prob1
est dans le même répertoire, elle est dans le même package (même raison)
et il est donc normal que tu accèdes à l'attribut déclaré protected.
euh presque... je veux dire que c'est le class loader employé qui définit le
package par défaut. Donc deux classes sans déclaration de package seront
dans le même package par défaut ssi elle sont chargées par le même class
loader. En l'occurence, comme la question a été posée par une dame qui se
qualifie elle-même de débutante, il est fort probable qu'elle utilise le
class loader qui s'occupe normalement du classpath...
Un attribut déclaré protected est accessible par les classes filles
(héritage) et par les classes du même package. Comme tu n'as pas précisé de package dans ta classe, la JVM considère qu'elle est dans un package par défaut, celui de ton répertoire. Par conséquent, si ta classe Prob1 est dans le même répertoire, elle est dans le même package (même raison) et il est donc normal que tu accèdes à l'attribut déclaré protected.
euh presque... je veux dire que c'est le class loader employé qui définit le package par défaut. Donc deux classes sans déclaration de package seront dans le même package par défaut ssi elle sont chargées par le même class loader. En l'occurence, comme la question a été posée par une dame qui se qualifie elle-même de débutante, il est fort probable qu'elle utilise le class loader qui s'occupe normalement du classpath...