Java:静态类与内部类

2022-08-31 04:44:15

静态和非静态嵌套类有什么区别?


答案 1

根据定义,内部类不能是静态的,因此我将把你的问题重铸为“静态和非静态嵌套类之间有什么区别?

非静态嵌套类对嵌套它的类的成员具有完全访问权限。静态嵌套类没有对嵌套实例的引用,因此静态嵌套类不能调用非静态方法,也不能访问嵌套它的类的实例的非静态字段。


答案 2

让我们从智慧的源泉中寻找这样的问题:Joshua Bloch的 Effective Java

从技术上讲,没有静态内部类这样的东西。根据 Effective Java,正确的术语是静态嵌套类。非静态嵌套类确实是一个内部类,以及匿名类和本地类。

现在引用:

非静态嵌套类的每个实例都与其包含类的封闭实例隐式关联...可以在封闭实例上调用方法。

静态嵌套类无权访问封闭实例。它也使用更少的空间。


推荐