静态内部类如何访问外部类的所有静态数据成员和静态成员函数?

时间:2016-03-25 13:56:50

标签: java

我观察到静态内部类可以访问外部类的所有静态数据成员和成员函数。 java如何做到这一点?

^~

3 个答案:

答案 0 :(得分:1)

Java中的静态成员是按类别分配的。由于任何静态成员只有一个每类项目,因此Java知道每个项目在运行时的位置。

因此,这里唯一的问题是从访问控制的角度来看项目的可见性。在这里,Java也没有问题,因为Java编译器知道每个静态项的访问位置。

在您的示例中,InnerStatic.display可以像StaticClass.show一样访问StaticClass.main。实际上,允许在同一个包中使用StaticClass的任何方法:

StaticClass.show(); // this will compile from anywhere

InnerStatic的优点是编译器知道"周围" class,所以当它找不到InnerStatic.show时,它会继续查找,并在StaticClass中找到该方法。

答案 1 :(得分:0)

static方法可以访问任何其他类的static字段和方法,除非访问修饰符阻止它。

访问它们的方式与在同一个类中访问方法和字段的方式相同。

答案 2 :(得分:0)

在你的例子中,inner / outer与它无关。您的字段和方法都是public或包私有(即没有可见性修饰符),并且可以被同一个包中的任何类访问。