Java内部类访问和最佳实践

谢谢

我知道内部类可以访问外部类中的所有内容(因为它是该类的成员),但是相反呢?

  1. 外部类是否可以访问内部类中的私有变量和方法?

  2. 我看过一些文章提到内部类应该是私有的,以便它们只能由外部类访问。这对内部类的可访问性有什么影响?

  3. 在涉及内部类时,处理访问级别的最佳实践是什么?我假设封装越多越好,但这是以牺牲可访问性为代价的吗?

jaco0646

有效的Java(第2版)第22项:“相对于非静态的偏爱静态成员类”更详细地介绍了此主题。

简短摘要:

  1. 除非需要访问,否则内部类不应具有对外部类实例的访问权,即内部类应static默认为。为了获得技术,Effective Java调用了这些静态成员类,而不是内部类,并使用术语嵌套类来涵盖静态和非静态版本。
  2. 外部类始终有权访问其内部类的成员,即使这些成员是private这样,内部类只能将自身暴露给外部类。
  3. “内部阶级应该只为服务外部阶级而存在。”

就个人而言,我倾向于实现一个内部类,只要这样做允许内部类的构造函数为private,即当一个类只能从另一个(外部)类实例化时。任何其他封装,例如使整个内部类private都可以使用;但是public内部类是完全可以接受的。Java中有很多示例,例如AbstractMap.SimpleEntry

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java最佳实践-内部类访问外部类静态变量

来自分类Dev

Flutter小部件最佳实践:内部类与功能

来自分类Dev

使用Clojure访问Java静态内部类

来自分类Dev

从内部类中访问Java actionlistener变量

来自分类Dev

Java内部类-访问外部对象的变量

来自分类Dev

解释在Java中访问内部类的方法?

来自分类Dev

Java外部类对内部类接口常量的访问

来自分类Dev

Java android访问外部类中内部类的成员字段

来自分类Dev

Java内部类和捕获对象

来自分类Dev

关于接口和内部类的Java基础

来自分类Dev

Java中的内部类和封闭实例?

来自分类Dev

Java枚举匿名内部类和反射

来自分类Dev

如何访问内部类?

来自分类Dev

访问内部类变量

来自分类Dev

Java封装和OOP最佳实践

来自分类Dev

内部类的继承和对封闭类方法/字段的访问

来自分类Dev

内部类的继承和对封闭类方法/字段的访问

来自分类Dev

PHP:类范围-外部类最佳实践?

来自分类Dev

内部类访问外部类的嵌套枚举

来自分类Dev

从内部类对象访问外部类函数

来自分类Dev

内部类访问外部类的嵌套枚举

来自分类Dev

从内部类访问外部类的字段

来自分类Dev

从内部类对象访问外部类函数

来自分类Dev

CIFS挂载和Kerberos-访问权限或最佳实践

来自分类Dev

CIFS挂载和Kerberos-访问权限或最佳实践

来自分类Dev

如何从Java中的封闭类访问内部类?

来自分类Dev

Java无法访问内部类中的受保护变量

来自分类Dev

无法访问Java中的内部类问题

来自分类Dev

在Java ASM中访问私有内部类