接口声明的访问说明符
Posted
技术标签:
【中文标题】接口声明的访问说明符【英文标题】:Access Specifier for Interface Declaration 【发布时间】:2011-01-28 16:27:37 【问题描述】:为什么不能使用受保护/私有访问说明符接口声明?
【问题讨论】:
【参考方案1】:你可以声明一个受保护的类,或者实际上是一个私有的——但只能在另一个类中。此时,它对派生自外部类的类可见(在受保护的情况下)或不可见(在私有的情况下):
public class Outer
private static class NotVisibleToSubclassesOfOuter
protected static class VisibleToSubclassesOfOuter
【讨论】:
接口也是如此。【参考方案2】:私人课程是什么意思?它不能在这个类之外使用吗?为什么你会有这样的课? (你将如何运行/测试它?)
受保护的类是什么意思?只有扩展它的类才能看到它。因此,当您键入一个类骨架(在世界之外的某个地方)时,它是不可见的,但是当我们说动态扩展类时,它变得可见?
包保护类有意义 - 它对包内的类可见,而不是真正供公众使用。
【讨论】:
私课是有原因的。您希望在您的库中使用实用程序类,但您不想将其公开。但是由于 javac 为每个类创建 .java 文件,它有点没用。 @Andrey 然后将该类作为使用它的类的私有类:) 不是单独的私有类:) OP 询问为什么类没有私有修饰符。它们在 Java 中没有,因为没有它们是有意义的 :) 是的,我同意。但我想提一下,类的私有修饰符仅在 java 中是无用的,而不是 oop 本身。在 C# 中有一个类的私有修饰符,它在那里非常有意义。【参考方案3】:为类或接口使用私有或受保护的访问说明符是没有意义的,因为当涉及到实现数据封装的变量或方法时,这两者更有意义。
【讨论】:
然而,当所讨论的类型是嵌套类型时,两者都有意义。例如,请参阅我的答案。【参考方案4】:Java 中没有访问说明符之类的东西。该术语是“访问修饰符”。
(所以你看到的所有询问有什么区别的面试问题都是无稽之谈。)
【讨论】:
以上是关于接口声明的访问说明符的主要内容,如果未能解决你的问题,请参考以下文章