当前位置: 首页 > 知识库问答 >
问题:

如果接口只允许公开,这是如何工作的

仉磊
2023-03-14

下面是成功编译的代码

 import java.util.*;
    class Test
    {
        protected interface Yes
        {
            void show();
        }
    }
    
    class Testing extends Test implements Test.Yes
    {
        public void show()
        {
            System.out.println("show method of interface");
        }
    }
    
    class A
    {
        public static void main(String[] args)
        {
            Test.Yes obj;
            Testing t = new Testing();
            obj=t;
            obj.show();
        }
    }

共有2个答案

邵毅
2023-03-14

接口本身可以具有类可以具有的任何可见性。对于限制为公共和包私有的顶级接口,对于嵌套接口,它可以是任何东西。

在Java9之前,接口内部的所有东西都必须是公共的,没有显式可见性修饰符的所有东西都自动是公共的。Java9使得向接口添加私有方法成为可能,默认情况下可以调用这些方法实现。

请注意,仍然不允许使用受保护的内部接口,并且不能使用包private,因为没有显式public或private修饰符的成员会自动公开。

毛缪文
2023-03-14

您的理解是不正确的-请参阅Java语言规范,第9.1.1节。

受保护的访问修饰符和私有的访问修饰符仅适用于其声明直接由类声明括起来的成员接口(§8.5.1)。

 类似资料:
  • 我有一个包裹 现在我想禁止在之外的实现,但是应该是公共的,因为我将其用于。 如何做到这一点? 这有什么“套餐最终模式”吗? 你有过这样的情况吗? 详情: 我知道有可能只使用带有包私有构造函数的抽象类,而不是接口,但是和扩展不同的类,因此我需要多重继承(因为模拟多重继承(例如,见有效的Java项目18)在这里不起作用)。

  • 问题内容: 问题答案: 您正在定义一个实现该接口的匿名类,并立即创建一个type对象。

  • 问题内容: 我正在创建一个使用webpack-dev-server和react-router进行开发的应用程序。 似乎webpack-dev-server是建立在以下假设的基础上的:您将在一个位置拥有一个公共入口点(即“ /”),而react- router允许无限数量的入口点。 我想要webpack-dev-server的好处,特别是对生产力非常有用的热重载功能,但是我仍然希望能够加载react

  • 问题内容: 我正在研究Spring Core认证,并且对Spring如何处理JDBC查询有一些疑问: 因此,我知道可以根据希望获取的数据类型以多种方式从数据库表中获取数据: 1)查询 简单类型* (如int,long或String):我使用 jdbcTemplate 类的 queryForObject() 方法,类似这样: * 因此,要获取一个简单的对象作为int值,我使用 queryForObj

  • 我正在创建一个应用程序,它在开发中使用webpack-dev-server和react-router。 似乎webpack-dev-server是基于这样一个假设构建的,即在一个地方(即“/”)有一个公共入口点,而react-router允许无限数量的入口点。

  • 问题内容: 使用新的java lambda和功能接口的概念,是否可以将这些功能接口视为方法? 我发现了很多有关实际lambda表达式语法的信息,但与此无关。 问题答案: 你的主张 之前,您的建议已在lambda-dev邮件列表中进行了讨论: http://mail.openjdk.java.net/pipermail/lambda-dev/2012-February/004518.html 它之所