接口声明的访问说明符

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 中没有访问说明符之类的东西。该术语是“访问修饰符”。

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

【讨论】:

以上是关于接口声明的访问说明符的主要内容,如果未能解决你的问题,请参考以下文章

java中使用接口作为方法的参数,这说明啥?能传啥参数进去?谢谢!

面向对象的分析与设计

Map.Entry说明

关于js函数的说明

前端进阶-TypeScript类型声明文件详解及使用说明

Abp中SwaggerUI的接口说明文档配置