java成员、类、可访问性说明
下面是一个我无法理解的例子:
abstract class Personne {
protected static int nbPersonnes=0;
static void nbpersonnes (){
System.out.println(
“\n Nombre d’employés :“ + nbPersonnes +
“\n Nombre de secretaires : “ + Secretaire.nbSecretaire() +
}
第二类是Secretaire
:
class Secretaire extends Personne {
private String numBureau;
private static int nbSecretaires;
Secretaire (String nom, String prenom, String rue,String ville,String numBureau) {
super(nom,prenom,rue,ville);
this.numBureau=numBureau;
nbSecretaires++;}
类Personne
如何访问私有成员Secretaire.nbSecretaire()
我认为类Secretaire
可以访问Personne
成员,而不是相反nbSecretaires
是一个私有成员。如何在课堂之外访问它
# 1 楼答案
这在C#中是正确的,但在Java中则不然
在Java中,同一顶级类中的所有代码都可以访问该顶级类(包括顶级类本身)中声明的所有类的所有私有成员
从JLS 6.6.1
# 2 楼答案
Secretaire.nbSecretaire()
是一个静态方法调用表达式。它不访问私有nbSecretaire
成员,而是访问方法nbSecretaire()
,您没有显示其定义但是,如果
Secretaire
类嵌套在Personne
中,那么它的所有成员,甚至私有成员,都可以从Personne
访问注意:在我回答问题时,您发布的代码的语法太混乱,不清楚是否是这种情况