你误解了的含义
protected。你可以访问A从中声明的受保护成员C,但只能访问的实例C或的子类C。有关受保护访问的详细信息,请参见JLS的6.6.2节。尤其是:
令
C为声明受保护成员的类。仅在C的子类S的主体内允许访问。
另外,如果Id表示实例字段或实例方法,则:
[…]
如果通过字段访问表达式E.Id(其中E是主表达式)或通过方法调用表达式E.Id(…)(其中E是主表达式)进行访问,则仅当且仅当允许访问时,如果E的类型是S或S的子类。
(强调我的。)
所以这段代码就可以了:
C c = new C();System.out.println(c.publicInt);System.out.println(c.protectedInt);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)