`
sober1988
  • 浏览: 9309 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Interface与Object之间的关系问题

SUN 
阅读更多

最近在想Interface与Object之间的关系问题?
我们都知道,在JAVA中,所有的类都是继承了Object类,但是接口呢?
在我们定义接口时,是不需要显示 extends java.lang Object
但是一个接口没有继承Object类,但我们在任何接口上调用Object类的方法,编译器都不报错,这种现象该如何解释呢?例如,下面的代码中 Runnable是一个接口,但我们针对这个接口调用了Object类的一些方法,可以成功通过编译,是不是编译器对这种情况进行了特殊对待?
class InterfaceAndObject
{
  public void interfaceTest(Runnable r)
  {
    System.out.println(r.toString() + r.hashCode());
  }
}

去看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中具有相同签名的方法时,编译器不会报错!
这段描述对我很有帮助,说了这么多,只是想让大家在空闲时间来考虑JAVA的设计思路和理念,巩固和加深对它的理解.
分享到:
评论

相关推荐

    接口与Object类

    在深入探讨“接口与Object类”这一主题之前,我们首先明确两个核心概念——接口(interface)与抽象类(abstract class),以及它们与Java基础类库中不可或缺的Object类之间的关系。 ### 接口与抽象类 #### 接口...

    ActiveObject.pdf

    ActiveObject背后的原理非常简单:它利用了Java数据对象的通用约定,如get、set和is等方法,来自动处理对象与数据库之间的交互。具体而言,当开发者定义了一个符合ActiveObject规范的Java接口或类时,该框架会自动...

    最完整的Object Pascal语言介绍(中文版)

    单元之间通过`uses`关键字引入依赖关系。例如: ```pascal unit MyUnit; interface // 声明在此单元中定义的类型、函数和过程 implementation // 实现在此单元中声明的函数和过程 initialization // 单元初始...

    Object-Oriented Analysis and Design

    面向对象分析与设计(Object-Oriented Analysis and Design,简称OOAD)是软件开发过程中关键的两个阶段,它涉及到对问题域的深入理解以及创建一个能够反映这些理解的模型。本章节主要讨论了统一建模语言(Unified ...

    ArcObject 10.3.1 For Java 对象模型(ODM)

    - 关联(Association):表示类之间的关系,如图层与地图、几何对象与属性数据之间的关联。关联具有定义好的两端多重性。 - 类型继承(Type Inheritance):创建具有父类共享属性和方法的特殊类。子类可以增加自己...

    BCB6.VCL.Object.Hierarchy.rar_BCB6 VCL_VCL structure_bcb 帮助_vcl_

    这个层次结构展示了类的继承关系,使开发者能够快速理解哪些组件是从哪个基类派生的,以及它们之间如何协作。在VCL中,TComponent是所有组件的基类,从它派生出许多具体的组件类,如控件(TControl)、窗体(TForm)...

    PyPI 官网下载 | zope.interface-4.0.0-py2.7-win-amd64.egg

    “zope.interface”还支持事件和组件架构,这使得在大型项目中,不同部分之间的通信变得更加容易。通过注册和查找适配器,可以实现复杂的依赖关系,使得代码更加模块化。 总结来说,“zope.interface-4.0.0-py2.7-...

    C#与C++之间类型的对应关系

    本文将详细探讨C#与C++之间的类型对应关系,这对于跨平台开发或者混合编程环境中的开发者来说至关重要。 首先,C#是一种.NET框架下的高级编程语言,它由微软公司开发,强调安全性和可维护性。C++则是一种静态类型的...

    Object-C的语法与Cocoa框架_V1.0_ios_base32u_

    **Object-C的语法与Cocoa框架** Object-C是苹果公司为Mac OS X和iOS操作系统开发的应用程序编程语言,它是C语言的超集,融入了Smalltalk的面向对象特性。了解Object-C的基础语法和Cocoa框架对于开发苹果平台的应用...

    由C#转Object-C开发入门基础

    Objective-C在表面上可能看起来与C#截然不同,但其实它们之间有很多共通之处。以下是一些关键的区别: ##### 1. 减号、中括号与NS**** - **减号**:在Objective-C中,方法的声明以减号开头。例如,在C#中声明一个...

    interface使用

    它只包含一个名为`CompareTo`的方法,该方法接收一个`object`类型的参数,并返回一个整型值,表示当前对象与传入对象之间的大小关系: - 如果当前对象小于传入的对象,则返回负数(通常是-1); - 如果当前对象等于...

    第五章 探索Interface Builder的例子

    7. **Interface Builder与Swift/Xcode集成**:Interface Builder无缝集成在Xcode中,使得在代码编辑器和设计工具之间切换变得简单。在本章中,你将体验到这种一体化的工作流程,以及如何在Interface Builder和Swift...

    The Object Primer - Introduction to Techniques for Agile Modeling.pdf

    - **示例**:类图展示了系统中不同实体之间的继承关系和关联关系。 ###### 2.5 类职责协作卡片 (Class Responsibility Collaborator - CRC Cards) - **定义**:一种非正式的方法,用于快速记录类的责任和协作方式。...

    ArcGIS Object Model

    1. **关联(Association)**:表示两个或多个类之间的简单关系,如图层与地图文档之间的关系。关联具有明确的多重性定义,例如“一对多”、“多对多”等。 2. **类型继承(Type Inheritance)**:定义了子类如何继承父类...

    装箱与坼箱的区别!两者之间的关系

    ### 装箱与坼箱的区别及两者之间的关系 在计算机编程领域,特别是面向对象语言如C#中,装箱(Boxing)与坼箱(Unboxing)是两个非常重要的概念,它们主要用于处理值类型(Value Types)和引用类型(Reference Types...

    Content Decryption Module Interface Specification

    1. CDM Interface Object Model:这是一个对象模型,用来描述CDM接口如何在用户代理中进行通信和操作。 2. Cdm_MediaKeysObject:这是一个媒体密钥对象,与EME规范中的MediaKeys接口相对应,是平台DRM组件与网页...

    Object Oriented Programming using Java

    - **对象与类的关系**:解释对象是类的实例,而类则是对象的模板或蓝图。 - **成员变量与成员方法**:介绍成员变量存储数据,成员方法则定义对象的行为。 - **访问控制修饰符**:public、private、protected和...

    The Object-Oriented Thought Process (3rd Edition)

    - **组合(Composition):** 强调部分与整体的关系,部分不能独立存在。 - **聚合(Aggregation):** 部分可以独立于整体存在。 - **应用场景:** 在设计复杂系统时,合理利用组合和聚合可以提高系统的灵活性和可...

    OBJECT_C入门

    3. **Auto Layout**:Auto Layout 是一个布局系统,用于定义用户界面元素之间的关系,使界面能够在不同尺寸的设备上自动调整。 4. **ARC (Automatic Reference Counting)**:ARC 是一种自动内存管理机制,用于简化...

Global site tag (gtag.js) - Google Analytics