【问题标题】:Difference between inner and outer class内部类和外部类的区别
【发布时间】:2019-02-12 04:30:20
【问题描述】:

假设我们有这个:

class Foo {}
public class Bar{}

对比:

public class Bar{
  public class Foo{}
}

我不知道有什么区别。在这两种情况下,Foo 都应该对包含 Bar 的文件是私有的。有区别吗?当然,如果我们将其设为静态,那么它可能对其他文件可用?

public class Bar{
  public static class Foo{}
}

但我是专门询问没有 static 关键字的情况。

【问题讨论】:

  • 在这两种情况下,Foo 应该是包含 Bar 的文件的私有。在这两种情况下都是错误的。
  • 你是什么意思 Foo 应该是包含 Bar 的文件的私有 ?更有可能是 stackoverflow.com/questions/11398122/… 的副本
  • 好吧,请纠正我,也许它应该是包私有的,而不是文件私有的

标签: java inner-classes


【解决方案1】:

来自 Oracle 文档,

嵌套类是其封闭类的成员。非静态嵌套类(内部类)可以访问封闭类的其他成员,即使它们被声明为私有。静态嵌套类无权访问封闭类的其他成员。

有关嵌套类的更多详细信息,请参阅此官方文档。

https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

【讨论】:

  • 这不是“官方文档”。它由 JLS、JVM 规范和 Javadoc 组成。这是一个教程。它是关于嵌套类,而不是具体的内部类。
  • 内部类不是嵌套类吗?我相信,问题中提到的示例类是嵌套类,“教程”/“文档”回答了这个问题。 (嵌套类中私有、公共、静态引用的使用)
  • @SivarajVelayutham OP 明确表示他们只询问内部类(“我专门询问没有 static 关键字的情况”),因此链接到讨论的文档嵌套类通常是不合适的。
猜你喜欢
  • 1970-01-01
  • 2018-12-08
  • 1970-01-01
  • 2013-04-26
  • 2011-03-10
  • 1970-01-01
  • 1970-01-01
  • 2011-01-07
  • 1970-01-01
相关资源
最近更新 更多