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

为什么类或接口不能接收私有或受保护的访问修饰符?

乐宜民
2023-03-14
问题内容

我正在阅读一些Java文本,文本说我们只能为类和接口应用publicdefault访问修饰符。因此,如果我们声明以下内容,则会产生编译错误:

private class A {}

要么

protected class A{}

我很好奇为什么类或接口不能接收privateprotected访问修饰符?


问题答案:

private 表示“仅在封闭类中可见”。

protected 表示“仅在封闭类和任何子类中以及封闭类包中的任何位置可见”。

private因此,应用于顶级类没有任何意义;的定义的第一部分也是如此protected。的第二部分protected 可能
适用,但是它被默认的(受包装保护)修饰符覆盖,因此,这protected部分是没有意义的,而一部分是多余的。

双方privateprotected可以(并且经常是)应用到嵌套类和接口,只是从来没有顶级类和接口。



 类似资料:
  • 问题内容: 在Java中,为什么不能在接口中使用受保护的方法? 由于根据Java规范 受保护的访问(由关键字protected表示)-同一包中任何类型以及任何包中的子类均可访问的字段或方法。 如果我必须使用该接口,那么我将实现它并覆盖方法。因此,如果我要实现类可以访问这些方法的位置,因为该方法可以在任何包中访问。那么,将方法声明为Interface中的保护有什么害处? 问题答案: 受保护的方法旨在

  • 问题内容: 我在理解Java(或其背后的设计)中的受保护的访问修饰符时遇到了一些麻烦。我认为这意味着程序包访问和通过继承包含抽象成员的类的对象的访问。 我编写了以下示例代码。我看到,如果未注释,注释掉的行会产生编译错误。为什么我可以通过Second中的Second对象而不是Second中的First对象访问pro? 问题答案: 该网页链接@MadProgrammer给出了一个体面的解释: “ pr

  • 是否可以实现一个接口,然后在重写方法时,使方法私有或受保护?

  • 问题内容: 为什么定义中的所有方法都是隐式的?为什么不允许使用方法? 问题答案: 因为接口应该表示“您可以在课堂外看到的东西”。添加非公共方法是没有意义的。

  • 我有两个配置,代码是这样的。 代码未按预期运行。所以我的问题是... 对于bean方法,当bean方法被Spring AOP代理后,使用修饰符<code>public 有没有办法在配置中隐藏bean 在这种情况下,我是否触发了方法注入 由于bean方法在大型项目中可能具有相同的名称,是否有一些最佳实践来避免潜在的冲突(注入意外的bean)

  • 我在package1中有一个名为a的类,在Package2中有另一个名为C的类。C类扩展了A类。 A有一个实例变量,声明如下: 这是怎么回事?