classes internes protected / public
Quelqu'un peut-il m'expliquer quelle est la différence entre protected
/public
Intérieure classes?
Je sais que public
les classes internes sont à éviter autant que possible (comme expliqué dans ce l'article).
Mais de ce que je peux dire, il n'y a pas de différence entre l'utilisation de protected
ou public
modificateurs.
Prendre un coup d'oeil à cet exemple:
public class Foo1 {
public Foo1() { }
protected class InnerFoo {
public InnerFoo() {
super();
}
}
}
...
public class Foo2 extends Foo1 {
public Foo2() {
Foo1.InnerFoo innerFoo = new Foo1.InnerFoo();
}
}
...
public class Bar {
public Bar() {
Foo1 foo1 = new Foo1();
Foo1.InnerFoo innerFoo1 = foo1.new InnerFoo();
Foo2 foo2 = new Foo2();
Foo2.InnerFoo innerFoo2 = foo2.new InnerFoo();
}
}
Tous de cette compile et est valable, que je déclare InnerFoo
protected
ou public
.
Ce qui me manque? S'il vous plaît, m'indiquer un cas où il y a une différence entre l'utilisation de protected
ou public
.
Grâce.
source d'informationauteur bruno conde
Vous devez vous connecter pour publier un commentaire.
La
protected
modificateur d'accès limite l'accès des classes autres que celles qui sont dans le même package et ses sous-classes.Dans l'exemple illustré, la
public
etprotected
aura le même effet, comme ils sont dans le même package.Pour plus d'informations sur les modificateurs d'accès, la Contrôle de l'Accès aux Membres d'une Classe page de La Java Des Tutoriels peuvent être d'intérêt.
Vous pouvez juste penser protégé intérieur de la classe est membre protégé, alors qu'à l'accès pour la classe, package, sous-classe, mais pas pour le monde.
En outre, pour outter classe, il y a seulement deux modificateur d'accès. Public juste et l'emballage.
Chose bizarre en java:
Pur Java: Vous ne pouvez pas retourner un intérieure privée de la classe à partir d'un getter public.
En JSP : Vous ne pouvez pas retourner un non-public à l'intérieur de la classe à partir d'un getter public.
Java Démo, Vous Pouvez Exécuter:
JSPne mettre que le code de la classe ci-dessus dans le dossier: com/monpaquet/Maclasse
et mettre "import com.myPackage.MyClass" en tant que première ligne de code source. Puis créer un nouveau .page jsp avec ce code source:
Pile Utilisé:
Java8 + Tomcat9