public class Main {
static class Article {
// Price in Article, private!
private float price;
Article(float price) {
this.price = price;
}
}
static class Milk extends Article {
Milk(float price) {
super(price);
//Has access to private price
System.out.println(super.price);
}
}
public static void main(String[] args) {
new Main.Milk(1.5f);
}
}
在此示例中,子类可以通过super.price访问私有成员 access specifiers in inner classes是什么意思?
答案 0 :(得分:2)
来自JLS 6.6.1:
否则,将成员或构造函数声明为
private
,并且仅当访问发生在包含成员或构造函数的声明的顶级类型(第7.6节)的主体内时,才允许访问。 / p>
嵌套类因此可以访问其顶级类的私有成员,反之亦然。出于所有实际目的,完全可以在当前.java
文件中访问私有成员。