`

第五章 专题:Java语言的接口

阅读更多

    在家里,我们可以很容易地将微波炉从一个电源插座上拔下,然后将手提电脑插上去。这就是说,对电

源来说,这些电器都是可插入构建(Pluggale Component)。他们之所以是卡插入的(Pluggable),

因为他们都具与电源插座相匹配的插头。

 

  如果可以动态地讲一个构件一走,并以另一个构件取而代之,那么这种构件就是可插入构件。

 

  大家可以看出,所谓的接口,实际上就相当于电源的插座;而可插入构件就相当于这种插座匹配的电器。

正如电器的插入行是由同一的电源插座以及每个电器都有一个与之匹配的电源插头所一样,可插入构件的

在于存在一个公用的接口,以及每个构件都实现了这个接口。
   因此,接口是实现构件的可插入性(Pluggability)的关键。
 5.1 什么是接口
   一个java接口(Interface)是一些方法特征的集合。一个接口只有方法的特征,而没有方法的实现,因此这些方法在不同的地方
被实现时,可以具有完全不同的行为。在Java语言中,Java接口还可以定义public 常量。
   当人们说到“接口”的时候,往往有这两种不同的含义:第一种是指Java接口,这是一种Java语言中存在的语法结构。另
一种仅仅是这一个类所具有的方法。前者叫做“Java接口”,或者叫做“接口”。
 比如,java.lang.Runnable就是一个Java 接口(Interface)代码示例如下:

Public interface Runnable{
//即上面所说的方法特征,所有实现该接口的类,都具必须实现run()方法。
//在这里,仅有方法声明,没有实现。
 public abstract void run();
}
 

  在使用Java接口时,需要指明接口本身,以及实现这个接口的类。一个类实现一个接口,
这种关系叫做接口继承(Interface Inheritance):而一个类是另一个类的子类,这种关系叫做实现继承
(Implementation Inheritance)。接口继承的规则与实现继承的规则不同,一个类只能继承一个类,
但是却可以实现多个接口。
  Java接口本身没有任何方法的实现,因为Java接口不涉及表象,而只描述public行为,所以java接口比java
抽象类更为抽象化(因为,java抽象类中可以有具体的方法,而接口中只有方法声明)
   一个Java接口的方法只能是抽象的(abstract)和公开的(public),Java接口不能有构造子。Java接口可以有
Public,静态的和final的属性(见下面代码示例)。
  实现同一个Java接口的两个实现类,除了具有同样的方法以外。其行为可以完全的不同。接口和类的最重要的区别是,
java接口仅仅描述方法的特征(signature),而不给出方法的任何实现;而类不仅要给出方法的特征,而且还必须给出
方法的实现。

没有接口会怎么样
简单的说,在java语言中是单继承的。而接口是可以多重实现的,
如果说没有接口话,再给一个已经有超类的类加上一个新的超类是不肯能的。
如果硬要做的话,就只好把这个心的超类加到已有的超类上面,形成超类的超类;
如果这个超类的超类的位置已经被占用,就必须加到超超超类上,等等,那么整个
类继承的关系将会非常非常的庞大。这样一来,对一个具体的可插入性设计,就变
成了对整个登记结构的所有类的修改。
因此,没有接口,可插入性就没有任何保证。
接口是对可插入性的保证
 接口使可插入行变得可能。
 在一个类等级结构中的任何一个类都可以实现一个或者多个接口,这些接口会影响到
此类的所有子类,但是不会影响到此类的任何超类。此类将必须实现这些接口所规定的
方法,而其子类则可以从此类自动继承到这些方法,同时,如果需要也可以置换掉这些
方法,或者其中的一些。
  这时侯,这些子类就具有了可插入性。
类型
  用Java接口(以及java抽象类)用来声明一个新的类型。

分享到:
评论

相关推荐

    Java与模式.清晰.rar

    第5章 专题:Java语言的接口 第6章 专题:抽象类 第7章 里氏代换原则 第8章 依赖倒转原则 第9章 接口隔离原则 第10章 合成/聚合复用原则 第11章 迪米特法则 第三部分 第12章 简单工厂模式 第13章 工厂方法模式 第14...

    国开电大 Java语言程序设计 形考任务1-2答案.pdf

    【Java语言程序设计基础知识】 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle Corporation的一部分)于1995年推出。它以其跨平台性、安全性、可移植性和高效性能而闻名。Java的设计目标...

    Java与模式(清晰书签版) 设计模式 part3

    第5章 专题 JAVA语言的接口 第6章 专题 抽象类 第7章 里氏代换原则 第8章 依赖倒转原则 第9章 接口隔离原则 第10章 合成、聚合复用原则 第11章 迪米特法则 第12章 简单工厂模式 第13章 工厂方法模式 第14章 抽象工厂...

    软件设计师专题12JAVA程序设计语言

    本专题将深入探讨Java语言的关键概念、语法特性以及实际应用,帮助软件设计师提升编程能力。 一、Java语言基础 Java语言源自C++,但其设计目标更注重代码的可移植性和安全性。它采用了类加载机制,使得程序可以在...

    精品专题(2021-2022年收藏)Java程序设计期末试卷附答案.doc

    本试卷主要涵盖了Java编程语言的基础知识,包括变量赋值、数据类型、类的理解、接口、数组、方法调用、构造函数、接口实现以及类的继承等方面。以下是对这些知识点的详细解释: 1. **变量赋值**:Java中的变量赋值...

    专题之JAVA题库及答案.pdf

    Java语言是一种高级的、跨平台的、面向对象的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年5月23日发布。它的设计目标是提供高安全性、可移植性、高性能以及易于学习和使用的特点。Java语言有以下...

    JAVA精选2.rar

    以上是基于"JAVA精选2.rar"可能涉及的Java编程知识要点,实际内容可能会根据压缩包中的"第五章、wfx"等具体文件来进一步展开,例如第五章可能深入讲解某一专题,而"wfx"可能是某个练习案例或者特殊概念的缩写。...

    Java数据结构和算法中文第二版

    第5章 链表 链结点(Link) LinkList专题Applet 单链表 查找和删除指定链结点 双端链表 链表的效率 抽象数据类型 有序链表 双向链表 迭代器 小结 问题 实验 编程作业 第6章 递归 三角数字 阶乘 变位...

    Java面向对象程序设计(第3版)-PPT课件

    2. **面向对象编程**:Java3.ppt至Java5.ppt可能深入讨论了类与对象的创建、继承、多态性以及接口等核心面向对象特性。这部分内容对于理解Java的面向对象设计至关重要。 3. **高级Java**:Java6.ppt至Java8.ppt可能...

    java 入门教程课件——j2se

    10. **Java数据库连接**(第十五讲): - **JDBC(Java Database Connectivity)**:Java访问数据库的API,用于连接、查询、更新数据库。 - **数据库驱动**:实现JDBC接口的数据库特定软件,如MySQL JDBC驱动。 ...

    Java数据结构和算法中文第二版(1)

    第5章 链表 链结点(Link) LinkList专题Applet 单链表 查找和删除指定链结点 双端链表 链表的效率 抽象数据类型 有序链表 双向链表 迭代器 小结 问题 实验 编程作业 第6章 递归 三角数字 阶乘 ...

    精品专题资料(2021-2022年收藏)基于Java的人事管理系统文献综述.doc

    本系统基于Java语言,利用Eclipse作为开发环境,集成MySQL数据库进行数据存储。Java的跨平台性和丰富的类库为系统开发提供了便利。JDBC用于数据库连接,实现了人事信息、考勤信息和个人简历等模块的增、删、改、查...

    java编程源码

    本资源包含了“ch10”这个目录,通常在技术书籍或教程中,这样的目录可能代表第10章的内容,暗示我们即将探讨的是一个章节的主题,可能是进阶特性或者特定的技术专题。 在Java编程中,有许多关键知识点值得深入研究...

    JAVA期末复习试题

    1. **Java语言简介**:Java的历史、特点、应用领域以及与其他编程语言的区别。 2. **环境配置**:JDK的安装与配置,设置环境变量,以及使用Javac编译器和Java虚拟机(JVM)。 3. **语法基础**:变量、数据类型、...

    01基础阶段-考点理论精讲视频配套课件.zip

    5. **数据库系统基础知识**(第6章): 数据库用于存储和管理数据,如SQL语言、关系数据库模型、ACID特性、事务处理等。数据库设计和管理是许多应用程序的核心。 6. **软件工程基础知识**(第8章): 软件工程...

    Java面试专题答案.7z

    Java作为一门广泛应用于企业级开发的编程语言,其面试题库涵盖了众多核心概念和技术领域。在准备Java面试时,深入理解和掌握以下知识点至关重要: 1. **缓存技术**:Java中的缓存通常涉及到Ehcache、Redis和Guava ...

    JAVA项目开发案例全程实录光盘源代码第十二讲代码

    "JAVA项目开发案例全程实录光盘源代码第十二讲代码"是一个关于Java编程实践的专题,旨在帮助开发者理解如何将理论知识转化为实际的项目构建。这个案例涵盖了从设计到实现的全过程,通过具体的代码示例来阐述关键概念...

Global site tag (gtag.js) - Google Analytics