使用接口引用访问 java Object 类方法

2023-12-08

让我们考虑以下示例。

public interface SimpleInterface {
    public void simpleMethod();
}

public class SimpleClass implements SimpleInterface{

 public static void main(String[] args) {
     SimpleInterface iRef = new SimpleClass();
     SimpleClass cRef = new SimpleClass();
     iRef.simpleMethod(); // Allowed. Calling methods defined in interface via interface reference.
     cRef.specificMethod(); // Allowed. Calling class specific method via class reference.
     iRef.specificMethod(); // Not allowed. Calling class specific method via interface reference.
     iRef.notify(); // Allowed????

 }

 public void specificMethod(){}

 @Override
 public void simpleMethod() {}

}

我想,在Java中使用接口引用我们只能访问该接口中定义的方法。但是,似乎允许通过任何接口引用访问类 Object 的方法。我的具体类“SimpleClass”继承了Object类具有的所有方法,并且Object类绝对没有实现任何接口(人们会假设Object使用notify、wait等方法实现了某个接口)。我的问题是,为什么允许通过接口引用访问类 Object 的方法,考虑到我的具体类中的其他方法是不允许的?


为什么允许访问类的方法Object通过接口参考

您可以调用Object使用接口引用的类方法,尽管接口不扩展自Object类,因为Java中的每个根接口都有与每个方法对应的方法的隐式声明Object class.

JLS §9.2 - 接口成员:

接口的成员有:

  • 如果接口没有直接的超级接口,然后是界面 隐式声明一个带签名的公共抽象成员方法 m s、返回类型r、以及每个public对应的throws子句t 具有签名 s、返回类型 r 和 throws 子句 t 的实例方法 m 在对象中声明,除非方法具有相同的签名,相同 返回类型,并且兼容的 throws 子句由以下显式声明 界面。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用接口引用访问 java Object 类方法 的相关文章

随机推荐

  • Jenkins:根据相同 Jenkins 作业中的每个构建步骤结果发送电子邮件

    我只是想知道如何发送电子邮件电子邮件分机插件基于相同 Jenkins 作业的每个构建步骤结果 这是我的场景 我的 Jenkins 工作有 3 个构建步骤 构建步骤1 Pull latest code from github and Buil
  • 如何从 C++ 调用 fortran 例程?

    我希望从我的 C 代码中调用 fortran 例程 cbesj f 如何实现此目的 以下是我已完成的步骤 从 netlib amos 网页下载 cbesj f 以及依赖项 http www netlib org cgi bin netlib
  • 自动完成建议列表的 z-index 错误,我该如何更改?

    似乎我的自动完成列表的 z index 比我网站的某些元素低 所以它暴露不足 我应该编辑什么类 使用editCSS我播种这些类 并添加 我网站的z索引 但很少有不影响的是1 ui corner all ui menu item ingred
  • 如何打印第三列到最后一列?

    我正在尝试从 DbgView 日志文件中删除前两列 我对其中不感兴趣 我似乎找不到从第 3 列开始打印直到行尾的示例 请注意 每行都有可变数量的列 或更简单的解决方案 cut f 3 INPUTFILE只需添加正确的分隔符 d 即可获得相同
  • JTable 中的列的多个单元格渲染器?

    假设我有以下 JTable 按下按钮后就会显示 Name True Hello World False Foo Bar True Foo False Bar 我想渲染那些单元格最初对于 JCheckBox 来说是正确的 并且所有单元格都是最
  • MonoTouch.Dialog 崩溃

    我有一个小型测试应用程序 它仅在 3 个页面之间循环 这是应用程序委托 public override bool FinishedLaunching UIApplication app NSDictionary options sessio
  • 如何从嵌套函数内部访问 Stimulus JS 控制器方法?

    我有一个 Stimulus 控制器 其中有一个 setSegments 函数 然后在 connect 方法中使用以下代码 connect const options overview container document getElemen
  • 十六进制到二进制转换

    我已通过十六进制转换器将 jpeg 文件转换为十六进制代码 现在如何将该十六进制转换为二进制并另存为Jpeg磁盘上的文件 Like var 声明为十六进制代码 然后将该 var 十六进制代码转换为二进制并保存在磁盘上 Edit Var my
  • 如何使用X509使用JDBC连接MySQL?

    我已经设置了 MySQL 社区服务器 5 1 数据库服务器 我已经设置了 SSL 创建了证书等 我创建了一个具有 REQUIRES X509 属性的用户 我可以使用命令行客户端 mysql 使用此用户进行连接 并且 status 命令显示
  • 请解释一下此电子邮件验证正则表达式:[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我有这个脚本使用正则表达式来检查表单字段是否包含有效的电子邮件地址 请从声明中解释一下
  • Firebase 安全规则 - Auth 生成的 UID 是否应该保密? [复制]

    这个问题在这里已经有答案了 我一直在阅读 Firebase 实时数据库安全规则指南 https firebase google com docs database security 我有点困惑是否应该将 Firebase Auth 生成的
  • 如何将 Tensorflow BatchNormalization 与 GradientTape 结合使用?

    假设我们有一个使用 BatchNormalization 的简单 Keras 模型 model tf keras Sequential tf keras layers InputLayer input shape 1 tf keras la
  • 基于 gnu readline 的节点 shell

    是否有一个在内部使用 gnu readline 的 Node 外壳 As you know node shell sucks in 2 ways among others It doesn t have search for history
  • 是否可以将鼠标光标放在元素后面或者鼠标光标是否有 z 索引?

    当鼠标悬停在某个元素上时 我想用自定义图像替换鼠标光标 我通过首先关闭鼠标光标来做到这一点 cursor none 当它悬停在元素上时 然后我读出悬停元素上的光标位置 并将图形的 css 位置设置为光标位置并稍微偏移 以便鼠标光标不在图形上
  • Keras 如何处理多标签分类?

    我不确定如何解释 Keras 在以下情况下的默认行为 我的 Y 基本事实 是使用 scikit learn 设置的MultilabelBinarizer 因此 举一个随机的例子 我的一排y列是 one hot 编码的 如下所示 0 0 0
  • 显示所有文件的键盘快捷键

    有没有人在解决方案资源管理器中找到 显示所有文件 的键盘快捷键 还有一个相关的问题 是否有任何工具可以显示您在 VS 中执行的任何操作的键盘快捷键 Cheers SteveC 默认情况下没有 但 转到工具 选项 环境 键盘 在 显示包含的命
  • ICommand方法执行参数值

    我尝试理解 wpf 中的 ICommand 在我的 Event 类中 我实现了 ICommand 及其方法 一种方法是执行 public void Execute object parameter Do something 现在是我的问题
  • Office 365 REST API 可以发送包含纯文本和 HTML 正文的电子邮件吗?

    我正在查看 API 文档 看起来您只能指定一个Body in a Message 发送消息 https msdn microsoft com en us office office365 api mail rest operations S
  • 对象实例可以安全地清空指向自身的“this”指针吗?

    Class A public NullIt this NULL Foo NullIt A a new A a gt Foo assert a should assert here 除了内存泄漏之外 有没有办法达到这种效果 您到底想达到什么效
  • 使用接口引用访问 java Object 类方法

    让我们考虑以下示例 public interface SimpleInterface public void simpleMethod public class SimpleClass implements SimpleInterface