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

Java教程说我可以有一个包专用接口,但是我不能

微生新翰
2023-03-14
问题内容

在Java教程“定义接口”中,它说

如果未指定interface为public,则只有与该接口在同一包中定义的类才能访问该接口。

但是这个

interface PPInterface {
    void foo();
    void bar();
}

class NewClass implements PPInterface {
    void foo() {}
    void bar() {}
}

生成编译器错误是NewClass因为我试图分配较弱的访问权限;是公开的”。那么文档有误,或者我做错了什么,或者我对文档有误解?

我想我不必使用接口-我喜欢它,因为它可以使事情井井有条。


问题答案:

接口本身可以是包私有的,而不是其中的方法。您可以定义一个只能在其定义的包中使用(按名称)的public接口,但是其方法类似于所有接口方法。如果类实现该接口,则其定义的方法必须为public。这里的关键是接口
类型 在包外部不可见,而不是方法。文档并不正确,因为使用接口中定义的方法与使用接口本身不同。

还应注意,在定义接口时,public在方法定义之前不添加内容不会更改任何内容,因为方法都是隐式的public

如果您已实现接口的类本身是程序包私有的,public则接口方法的强弱显然不是问题。如果单继承问题不会对您造成影响,您当然也可以使用抽象类而不是接口:

abstract class Whatever {
  abstract void foo();
  abstract void bar();
}


 类似资料:
  • 问题内容: 我想知道我们可以在一个接口内定义一个接口。喜欢 这是面试中提出的问题。任何实时使用。 问题答案: 是的,我们可以做到。Java中的嵌套接口的定义如下: 嵌套接口是其声明出现在另一个类或接口的主体内的任何接口。顶级接口是不是嵌套接口的接口。 请参阅此为多。 进一步 … 一个原因可能是外部接口具有一种将回调实现作为参数的方法。在这种情况下,嵌套接口是回调方法必须实现的协定。我没有理由在顶层

  • 我基本上想要一个EC2,一个接口在公共子网,一个在私有子网。我应该能够通过公共接口从外界SSH,私有网络将用于与私有网络中的数据库通信。 在地形上。。。 我在该 VPC 中创建了一个 VPC,两个子网(一个公共子网,一个私有子网)。 创建了一个互联网网关,即 VPC 中的路由表,其路由为 0.0.0.0/0 至 IGW 已在与公有子网和路由表之间创建路由关联。 已创建一个 EC2 实例,其中一个接

  • 启动层java.lang.module.FindException初始化时出错:读取模块:d:\java\javatutorial\bin时出错,原因是:java.lang.module.invalidmoduleDescriptoreXception:在顶级目录中发现了learnjava.class(模块中不允许使用未命名的包)

  • 我想与Firebase连接,但我有一个错误:"无法解析Android应用程序模块gradleconfig.resolvegradle构建问题和/或重新同步."和我检查我的gradle.

  • 这是我得到的错误: 清单合并失败:属性元数据#android.support.VERSION@valuevalue=(26.0.2)from[com.android.support: design: 26.0.2]AndreidManifest.xml:28: 13-35也存在于[com.android.support: appcompat-v7:26.1.0]AndreidManifest.xm

  • GSON似乎在做某种把戏,它查看我的JavaBeans的内部字段,而不是使用公共可访问的属性信息。不幸的是,这不会为我们飞,因为我们神奇地创造了豆子充满了私人领域,我不希望它存储了。 这使得: 当然,从不调用我的类型适配器,这似乎使它不可能获得任何其他行为。