博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 的嵌套类(内部类和静态嵌套类)
阅读量:6607 次
发布时间:2019-06-24

本文共 1090 字,大约阅读时间需要 3 分钟。

嵌套类


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

你可能感兴趣的文章
【前端笔记】彻底理解变量与函数的声明提升
查看>>
Android 反编译利器,jadx 的高级技巧
查看>>
二叉搜索树(递归实现)
查看>>
Spring Retry重试机制
查看>>
Android官方架构组件LiveData: 观察者模式领域二三事
查看>>
[Android组件化]组件化数据分享
查看>>
你必须知道的HTTP基本概念
查看>>
当下拉列表数据过大时,该如何应对?
查看>>
使用OpenGrok搭建 可搜索可跳转的源码 阅读网站
查看>>
Android ContentProvider调用报错"Bad call:..."及相关Binder权限问题分析
查看>>
配置通过VLANIF实现跨设备VLAN内通信
查看>>
Linux-正则表达式
查看>>
基本shell脚本的编辑及变量
查看>>
加密和解密 tar
查看>>
[李景山php]每天TP5-20161216|thinkphp5-helper.php-1
查看>>
VMware、Workstation 使用
查看>>
用户输入和while循环
查看>>
将datatable 保存为 Excel文件(高效率版本)
查看>>
C/C++五大内存分区(转)
查看>>
System V 共享内存区
查看>>