当前位置: 首页 > 面试题库 >

Java类可访问性

冯曾笑
2023-03-14
问题内容

与我的其他问题略相关:以下内容之间有什么区别:

private class Joe
protected class Joe
public class Joe
class Joe

同样,最后2个之间的差异是我最感兴趣的。


问题答案:

任何包中的类都可以访问公共类。

具有默认访问权限(class Joe)的类仅对同一包中的其他类可见。

private和protected修饰符只能应用于内部类。

私有类仅对其封闭类以及同一封闭类中的其他内部类可见。

受保护的类对于同一包中的其他类以及扩展该封闭类的类都是可见的。



 类似资料:
  • 不工作的Kotlin代码如下所示: 我省略了(我相信)没有必要重现这个问题的代码。 Kotlin代码实际上是编译的,但在运行时,它在线程“main”java.lang.IllegalAccesserRor中抛出访问类foo.bar.utils.foo$bar$qux。当悬停在上时,IntelliJ显示一个提示,提示中定义了:public/*package*/open class Qux,所以在此上

  • 问题内容: 为什么在C#中,不允许派生类具有比其基类更大的可访问性。 例如,这将产生错误:可访问性不一致:与“ DerivedClass”类相比,基类“ BaseClass”的访问性较差 以及为什么在Java中允许它。 问题答案: 更新 :这个问题是我在2012年11月13日发布的博客的主题。感谢您提出的好问题! 为什么在C#中,不允许派生类具有比其基类更大的可访问性? 除了其他好的答案之外,请考

  • 我知道如何访问私有变量,但我正在尝试测试以下类: ProcessStatusResult: 在我的测试中,我需要在ProcessStatusBody中获取ProcessStatus来验证它,但我不知道如何做到这一点。 有没有一种方法可以使用反射(或其他方法)来访问它,而不必仅仅为了测试而在ProcessStatusResult中添加getter?

  • 我正在将我的项目从Java8迁移到OpenJDK11。在我的代码中,我使用了 我正在使用Eclipse。我得到的错误类型是不可访问的。我还尝试了这篇文章与最后一个导入如何告诉eclipse在编译时添加-导出

  • 问题内容: 如果我有一个包私有的Java类(用“ class”声明,而不是“ public class”),那么将内部方法声明为public或protected或package- private确实没有区别,对吗?那么我应该使用哪个,或者什么时候该使用呢?我有点困惑。 问题答案: 如果我有一个包私有的Java类(用“ class”声明,而不是“ public class”),那么将内部方法声明为p

  • 问题内容: Java中以下变量的可访问性有什么区别? 我对最后一个正在做什么最感兴趣。 问题答案: :任何人均可读/写 :对于子类的实例以及在封闭包中可读写 :对于类的任何实例以及内部或外部(包含)实例均是可读写的 :包专用,对于同一包内的所有类均可读写 有关更多详细信息,请参见JLS 编辑:添加了受保护的注释,说明访问是从同一程序包内部授予的,你们是完全正确的。还为添加了评论private。我想