请教Interface与Object之间的关系问题
一直没有读过什么经典的Java书籍,有时候被学员拿着《think in java》中一些看不懂的地方来问我,我才顺便跟着看上一页两页的。我现有的java知识都是零零散散收集的和在大量的教学实践中自我总结的,所以,我掌握的java知识体系不够系统。我现在有一个非常基础的问题,不知道有没有朋友能够给出权威的解释,最好能给出解释的原文出处,鄙人将不胜感激!
一个接口没有继承Object类,但我们在任何接口上调用Object类的方法,编译器都不报错,这种现象该如何解释呢?例如,下面的代码中Runnable是一个接口,但我们针对这个接口调用了Object类的一些方法,可以成功通过编译,是不是编译器对这种情况进行了特殊对待?
class InterfaceAndObject
{
public void interfaceTest(Runnable r)
{
System.out.println(r.toString() + r.hashCode());
}
}
----------------------------------------------------------------------------------
谢谢楼下各位的参与和帮助,特别感谢asfsd的提示,我去看了你提示的文章: http://community.csdn.net/Expert/TopicView3.asp?id=4902867
在这篇文章中,我看到了我想要的答案,如下:
回复人:dwys0343(特兰克斯) ( ) 信誉:100 2006-7-31 8:46:56 得分:0
去看Sun的官方文档TJLS(The Java Language Specification)吧!其中第9章9.2节关于接口有这么一段话:
If an interface has no direct superinterfaces, then the interface implicitly
declares a public abstract member method m with signature s, return type r,
and throws clause t corresponding to each public instance method m with
signature s, return type r, and throws clause t declared in Object, unless a
method with the same signature, same return type, and a compatible throws
clause is explicitly declared by the interface. It is a compile-time error if the
interface explicitly declares such a method m in the case where m is declared to
be final in Object.
楼上的老兄,谢了。研究得深入啊,这东西还看!^-^
大概意思是接口隐含定义了一套与Object类中的方法签名完全相同的方法,所以,我们在程序中调用接口的那些与Object中具有相同签名的方法时,编译器不会报错!这段描述对我很有帮助,以至我又想出了一个新的问题,来巩固和加深对它的理解.
interface InterfaceTest
{
/*boolean*/int equals(Object obj);
}
编译上面的接口时,将报告如下错误:
InterfaceTest.java:3:equals(java.lang.Object) in InterfaceTest cannot override equals(java.lang.Object) in java.lang.Object; attempting to use incompatible return type
found : int
required: boolean
/*boolean*/int equals(Object obj);
^
1 error
分享到:
相关推荐
Oracle Configuration Interface Object(CIO)是与Configurator Extensions交互的关键工具,它提供了一个接口,使得开发者可以编写自定义代码来访问和操作配置过程中的数据和逻辑。通过CIO,开发人员能够集成外部...
1. **数据交换**:Robot Interface允许机器人与其他设备之间实时交换数据,如位置信息、速度、力矩等,确保生产过程的精确控制。 2. **通讯协议支持**:FANUC的Robot Interface支持多种通讯协议,如Ethernet TCP/IP...
在IT行业中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于服务器与客户端之间的数据传输,因其简洁和易于阅读的特性而受到欢迎。Delphi是Embarcadero Technologies开发的一种集成开发...
ObjectBrowser10的兼容性意味着用户可以直接利用这些特性,而无需担心工具的兼容问题。 综上所述,ObjectBrowser10是一款强大且用户友好的Oracle开发和管理工具,它的GUI界面、全面的数据库管理和对Oracle10的支持...
在深入探讨“接口与Object类”这一主题之前,我们首先明确两个核心概念——接口(interface)与抽象类(abstract class),以及它们与Java基础类库中不可或缺的Object类之间的关系。 ### 接口与抽象类 #### 接口...
在PowerBuilder 9版本中,推出了一个重要的技术突破——PowerBuilder Native Interface(简称PBNI),该技术极大地增强了PowerBuilder与其他编程语言(如C/C++、Java)之间的互操作性。 #### 二、PBNI技术的关键...
ActiveObject背后的原理非常简单:它利用了Java数据对象的通用约定,如get、set和is等方法,来自动处理对象与数据库之间的交互。具体而言,当开发者定义了一个符合ActiveObject规范的Java接口或类时,该框架会自动...
其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对于问题领域本质的理解、对于设计意图的理解是否正确、合理。本文将对它们之间的区别进行一番剖析,试图给开发者提供一个在二者之间进行选择的依据。
### Object-C的语法与Cocoa框架详解 #### Object-C语法概览 Object-C是一种面向对象的编程语言,它是在标准C的基础上添加了面向对象特性的产物。Object-C的设计旨在提高代码的可读性和可维护性,同时保持C语言的...
孙源在MDCC 2015中国移动开发者大会上的演讲“Interface Builder实践与开源”涉及了iOS开发中一个关键的界面构建工具——Interface Builder(简称IB),以及相关的开源实践。IB是苹果公司在开发工具Xcode中提供的一...
其中特别提到了连接器的修改、连接器组件、适配器和代理、混合耳机插孔与Lightning连接器、苹果USB电源适配器、Apple Watch磁性充电线、Apple Watch Lug、设备检测、iAP2连接的多重性、断开连接与重新连接、设备状态...
Oracle Wait Interface性能诊断与调整实践指南 oracle press
然而,有时我们遇到的问题是,当手机通过USB连接到电脑后,Android Studio无法识别到设备,提示“缺少adb interface驱动程序”。这通常是因为电脑上缺少Android Debug Bridge (ADB) 的USB驱动,它是Android SDK的一...
3. 多态性:通过虚函数(Virtual)和接口(Interface),Object Pascal实现了多态性。虚函数允许子类重写父类的行为,接口则强制实现特定的一组方法,增强了程序的灵活性。 4. 封装:类的私有(Private)和保护...
单元之间通过`uses`关键字引入依赖关系。例如: ```pascal unit MyUnit; interface // 声明在此单元中定义的类型、函数和过程 implementation // 实现在此单元中声明的函数和过程 initialization // 单元初始...
- 连接面板:用于建立界面元素之间以及界面元素与代码之间的连接。 4. nib文件管理:nib文件是一种包含了用户界面元素及其布局信息的文件格式。通过Interface Builder,开发者可以创建、编辑和管理nib文件。关于...
总的来说,ROMaster ADB Interface.zip是为了解决电脑与安卓设备间的USB调试连接问题而提供的驱动程序,对于开发者和日常用户进行设备调试来说,是一个非常实用的工具。通过正确安装和使用,可以有效提升安卓设备与...
在Python的世界里,有许多优秀的库用于解决特定的问题,Zope.interface就是其中之一。这个库主要用于实现接口(Interface)的概念,它是一个强大的元编程工具,使得类和对象可以声明它们支持的接口,从而增加了代码...
三、安装与更新HDB Interface驱动: 1. 安装:通常,用户需要将华为提供的HDB Interface驱动解压后,通过设备管理器或者系统更新工具进行安装。安装过程中会自动识别并连接到相应的华为设备。 2. 更新:为了保持...
面向对象分析与设计(Object-Oriented Analysis and Design,简称OOAD)是软件开发过程中关键的两个阶段,它涉及到对问题域的深入理解以及创建一个能够反映这些理解的模型。本章节主要讨论了统一建模语言(Unified ...