【问题标题】:Access Specifier for Interface Declaration接口声明的访问说明符
【发布时间】:2011-01-28 16:27:37
【问题描述】:

为什么不能使用受保护/私有访问说明符接口声明?

【问题讨论】:

    标签: java interface private protected


    【解决方案1】:

    可以声明一个受保护的类,或者实际上是一个私有的——但只能在另一个类中。此时,它对派生自外部类的类可见(在受保护的情况下)或不可见(在私有的情况下):

    public class Outer
    {
        private static class NotVisibleToSubclassesOfOuter {}
    
        protected static class VisibleToSubclassesOfOuter {}
    }
    

    【讨论】:

    • 接口也是如此。
    【解决方案2】:

    私人课程是什么意思?它不能在这个类之外使用吗?为什么你会有这样的课? (你将如何运行/测试它?)

    受保护的类是什么意思?只有扩展它的类才能看到它。因此,当您键入一个类骨架(在世界之外的某个地方)时,它是不可见的,但是当我们说动态扩展类时,它变得可见?

    包保护类有意义 - 它对包内的类可见,而不是真正供公众使用。

    【讨论】:

    • 私课是有原因的。您希望在您的库中使用实用程序类,但您不想将其公开。但是由于 javac 为每个类创建 .java 文件,它有点没用。
    • @Andrey 然后将该类作为使用它的类的私有类:) 不是单独的私有类:) OP 询问为什么类没有私有修饰符。它们在 Java 中没有,因为没有它们是有意义的 :)
    • 是的,我同意。但我想提一下,类的私有修饰符仅在 java 中是无用的,而不是 oop 本身。在 C# 中有一个类的私有修饰符,它在那里非常有意义。
    【解决方案3】:

    为类或接口使用私有或受保护的访问说明符是没有意义的,因为当涉及到实现数据封装的变量或方法时,这两者更有意义。

    【讨论】:

    • 然而,当所讨论的类型是嵌套类型时,两者都有意义。例如,请参阅我的答案。
    【解决方案4】:

    Java 中没有访问说明符之类的东西。该术语是“访问修饰符”。

    (所以你看到的所有询问有什么区别的面试问题都是无稽之谈。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      • 2014-01-11
      • 2016-08-11
      • 1970-01-01
      • 2014-03-27
      • 1970-01-01
      • 2015-03-17
      相关资源
      最近更新 更多