`

接口能描述成has-a吗

 
阅读更多

接口has a什么呢? 如果说接口当作具备某种能力来用,比如Xyzable(Iterable, Printable, Observable),可以勉强说成has a吧,因为算是具备某种能力,但还不足以概括接口所有的特性,因为接口也可以当作is-a来用,接口所表示的Type用法也是很广的,如List接 口,ArrayList,AbstractList等也都是实现它的,所强调的侧面不同,因此我认为这里将接口描述成has-a特性欠妥。

一般而言,继承关系是is-a,组合关系才是has-a

 

所以这里接口就描述成什么好呢?接口算是继承关系吗?它的界限比较模糊,不太好确切描述~等待概念更新

 

仔细想想,接口应该也算是继承关系,抽象的强制实现并拥有,非抽象的直接强制拥有,其实都是强制拥有,都不能舍弃,顶多是改写,最终拥有的基本都是实现(例外是接口extends接口),只不过implements继承的可能只是骨架,是契约,是规范,extends继承的是现成的遗传(包括接口抽象方法,抽象类抽象方法除外,因为必须实现),但其中当然也是包括了骨架契约与规范的~

 

话说回来,语言设计者真的是很考究的,我们单单研究extends(extend)和implements(implement)这两个单词吧,其实都已经概括在内了,非常地精到~

 

extend:延伸、扩展,对于去extends的类或接口而言,表明了一种可能性,延伸扩展的可能性,当然也可以不延伸扩展,延伸扩展如重写,如添加,如实现,对于不延伸扩展,就如接口extends接口

 

implement:实现 表示必须去实现,全部实现接口规范的方法,已经概括

 

综上所述,我认为接口还是能归为is-a的

分享到:
评论

相关推荐

    struts_2.3.12GA_API文档(chm版本)

    public void setActionErrors(Collection<String> errorMessages)从接口 ValidationAware 复制的描述 Set the Collection of Action-level String error messages. 指定者: 接口 ValidationAware 中的 ...

    Java面试题(面向对象)

    - **A**:接口不能使用`private`或`protected`修饰符,因为接口本身就是公开的,所有的方法默认都是`public abstract`,所有变量默认都是`public static final`。 - **B**:Java支持一个类继承一个父类并实现多个...

    达内笔试题集答案.pdf

    - **选项 C** 描述了 Shape 类实现了 Colorable 接口,这是实现关系而非 has-a 关系。 - **选项 D** 表明 Animal 类拥有一个 Species 类型的对象,这正是 has-a 关系。 - **选项 E** 中 Container 类拥有一个 ...

    java 抽象类和接口1

    2. **接口**:接口强调的是“has-a”或“implements”的关系,适合用于定义对象间的行为协议,允许无关的类实现同一接口,实现松耦合。 **选择使用**: - 当希望定义一组公共行为,且这些行为在不同的类中有不同的...

    java开始面试的第41天.doc

    这反映了抽象类主要表达“is-a”关系,而接口强调的是“has-a”或“behaves-like-a”契约。 - 抽象类与子类之间需存在合理的继承关系,通常子类是父类的一种特殊形式。接口则不强求实现者与接口在概念上的关联,只...

    UML基础与应用--UML类图解析

    3.泛化(Generalization):描述类之间的继承关系,即is-a-kind-of关系。 4. 实现(Realization):描述类与接口之间的实现关系。 在UML类图中,每个类都有其自己的属性和方法,可以使用“-”、“+”和“#”符号来...

    浅析Java抽象类与接口的区别.zip

    接口则更多地表示“has-a”或“can-do”关系,强调对象之间的交互和行为规范。 7. **设计原则**:在设计时,如果需要为一组类提供通用的行为,可以使用抽象类;如果需要定义一组行为标准,让不同类遵循,应使用接口...

    SEED-XDS560v2PLUS仿真器安装、使用指南(Rev.B)

    SEED-XDS560v2PLUS仿真器是一款...以上信息都是基于用户手册的描述和指导,目的是为了让用户能够顺利安装并使用SEED-XDS560v2PLUS仿真器进行产品开发和调试。用户应遵循手册中的指导,确保使用过程中的安全性和有效性。

    javascript based rich UI and has a server

    标题和描述中提到的“javascript based rich UI and has a server”暗示了我们将探讨的话题是使用 JavaScript 创建具有丰富用户界面,并能与后端服务器进行数据交换的Web应用。 JavaScript 是一种轻量级的解释性...

    AT32f403a的FreeRTOS移植

    FreeRTOS的内核需要与微控制器的硬件接口进行交互,包括时钟管理、中断处理和内存分配等。因此,必须编写相应的初始化代码,以配置系统时钟、设置中断向量表和初始化堆栈。 1. **系统时钟配置**:AT32F403A通常使用...

    Java基础知识面试题系列三.docx

    3. 抽象类强调“is-a”关系,代表一种层次结构,而接口强调“has-a”关系,定义了对象间的一种交互方式。 4. 接口中的方法默认为`public`,而抽象类中的方法可以有不同的访问级别。 5. 抽象类的设计理念更适合于同类...

    笔记达内java

    在E选项中,`Container`类实现`Component`接口,并包含一个`Component`类型的数组,也体现了“has-a”关系。 ### Java静态初始化块和变量 第四个问题涉及静态初始化块和静态变量的使用。给出的代码会尝试减小未...

    2021-2022计算机二级等级考试试题及答案No.10739.docx

    但是,选项B中的描述是不正确的,因为一旦一个表已经属于某个数据库,就不能直接将其添加到另一个数据库中,需要先将其从原数据库中分离(即变成自由表),然后再添加到新的数据库中。 #### 3. 接口定义 - **题目**...

    系统分析与设计期末考卷(A卷)1

    Composition是UML中的一种组合关系,用于描述类之间的“has-a”关系,即一个类包含另一个类的实例。这种关系通常用于描述复杂的对象结构,例如一个汽车包含多个轮胎。 5. 哪种敏捷方法属于Extreme Programming(XP...

    xilinx-axidma-master DMA驱动

    例如,在视频流处理中,DMA可以从摄像头接口接收数据,直接写入内存,然后由GPU进行实时处理,最后再通过DMA将处理结果输出到显示器。这种无CPU参与的数据传输方式显著提升了系统的实时性。 配置Xilinx AXI DMA驱动...

    Java软件开发实战 Java基础与案例开发详解 7-1 面向对象的分析与设计简介 共11页.pdf

    - **组合**:也是“has-a”关系的一种形式,但是组合关系中的对象不能独立存在。 **3.2 关系的实现** - **继承**:通过extends关键字实现。 - **关联**:通过类的实例变量来表示。 - **聚合**:通过关联关系表示,...

    2018-autumn-hw-17020031057-石晓晨-201810071

    例如,汽车类可能包含引擎类和轮胎类的对象,汽车"has-a"引擎和轮胎。 3. **泛化关系**:泛化关系表示类之间的继承或接口实现。一个类可以继承自另一个类("is-a"关系),或者一个类可以实现一个接口,甚至接口可以...

    UML类图画法全程解析

    5. 关联(Association):关联描述类与类之间的连接,表示"has-a"的关系,用实线箭头表示。关联的基数可以在箭头两端添加数字,表示实例的数量。 6. 聚合(Aggregation):聚合是关联的一个特例,表示整体与部分的...

    课后题目八1

    适配器模式的核心思想是通过创建一个适配器对象,该对象将目标接口转换为客户期望的接口,从而使原有对象能在新的环境中正常工作。描述中的选项B "将一个无法控制现有对象与一个特定接口相匹配" 正确地阐述了适配器...

Global site tag (gtag.js) - Google Analytics