Java 的嵌套类(内部类和静态嵌套类)

2021-04-26 17:42:36 浏览数 (1)

参考链接: Java嵌套静态类

嵌套类 

 Java允许在一个类定义另一个类,称为嵌套类 (Nested Classes),类似下面的形式 

 class OuterClass {

    ...

   class NestedClass {

       ...

   }

}

复制代码

 内部类与静态嵌套类 

  嵌套类有静态和非静态两种,其中静态的称为静态嵌套类(static nested classes),非静态的称为内部类(Inner Classes)  一个嵌套类是包含它的外部类的一个成员,内部类能够访问外部类的其他成员,而静态嵌套类没有访问外部类的权限  作为外部类的成员,嵌套类能被声明为private, public, protected或者包内访问的访问权限。 

   静态嵌套类 

 静态嵌套类与静态类里面的方法类似,一个静态嵌套类不能直接调用外部类里面的实例变量或者方法,它只能通过对象引用访问他们。

 Java官方文档的解释: 

  Note: A static nested class interacts with the instance members of its outer class (and other classes) just like any other top-level class. In effect, a static nested class is behaviorally a top-level class that has been nested in another top-level class for packaging convenience. 

  一个静态嵌套类与其他任何 top-level class 一样和他的外部类的其他成员相互作用。实际上,为了封装的便利性,一个静态嵌套类的作用机制和其他被封装的 top-level class相同。 

 由于静态嵌套类是通过外部类名来访问的: 

 OuterClass.StaticNestedClass 

 所以可以通过以下的语法来创建静态嵌套类的对象: 

 OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass(); 

 至于内部类,因为它有权限访问外部类的成员,所以必须依赖一个外部类的实体对象,内部类自身又依赖于实例对象,所以内部类自身不能包含任何静态成员变量 (static)。但是内部类可以包含静态常量 static final 类型的成员。 

转载于:https://juejin.im/post/5c56b4c1f265da2daa3129bd

0 人点赞