一文介绍Java编程思想--接口

编程人员是最勤快的人,也是最懒惰的一群人,总是不断地学习,能够自动完成的绝对不会手写。要成为合格的Java全栈工程师?请完全理解Java的编程思想!

接口

interface关键字使抽象的概念更向前迈进了一部。abstract关键字允许人们在类中创建一个或者多个没有定义的方法--提供了接口部分,但是没有提供相对应的实现,这些实现是由此类的继承者创建的。interface这个关键字产生一个完全抽象的类,他根本就没有提供任何具体实现,它允许创建者确定方法名、参数列表和返回类型,但是没有任何方法提高。接口只是提供了形式,而未提供任何具体实现。

一个接口表示:所有实现了该特定接口的类看起来都像这样。因此,任何使用某特定接口的代码都知道可以调用该接口的哪些方法,而且仅仅需要这些。因此,接口被用来建立类与类之间的协议。

但是,interface不仅仅是一个极度抽象的类,因为他允许人们通过创建一个能够被向上转型为多种基类的类型,来实现某种类似多重继承的特性。

接口也可以包含域,但是这些域隐式是static和final的。

可以在接口中显式的将方法声明为public的,但即使你不这么做,他们也是public的。

抽象类和抽象方法

建立一个通用接口的唯一理由是,不同的子类可以用不同的方式表示此接口。通用接口建立起一种基本形式,以此表示所有导出类的共同部分。另一种说法是将这种类称为抽象基类,或简称抽象类。

如果我们只有一个像Instrument这样的抽象类,那么该类的对象几乎没有任何意义。我们创建抽象类是希望通过这个通用接口操纵一系列类。因此,Instrument只是表示了一个接口,没有具体的实现内容;因此,创建一个Instrument对象没有什么意义,并且我们可能还想阻止使用者这样做。通过让Instrument中的所有方都产生错误,就可以实现这个目的。但是这样做会将错误信息延迟到运行时才获得,并且需要在客户端进行可靠、详尽的测试。所以最好是在编译时捕获这些问题。

为此,java提供一个叫做抽象方法的机制,这种方法是不完整的;仅有声明而没有方法提。下面是抽象方法声明所采用的语法:

abstrac tvoid f();1复制代码类型:[java]

包含抽象的类叫做抽象类。如果一个类包含一个或者多个抽象方法,该类必须被限定为抽象的。

如果一个抽象类不完整,那么当我们试图产生该类的对象时,编译器会怎样处理呢?由于为抽象类创建对象是不安全的,所以我们会从编译器那里得到一条出错消息。

如果从一个抽象类继承,并想创建该新类的对象,那么就必须为基类中所有抽象方法提供方法定义。如果不这么做,那么导出类也必须是抽象类,且编译器将会强制我们用abstract关键字来限定这个类。

我们也可能会创建一个没有任何抽象方法的抽象类。考虑这种情况:如果有一个类,让其包含任何abstract方法都显得没有实际意义,而且我们也想要阻止产生这个类的任何对象,那么这时这样做就很有用了。

创建抽象类和抽象方法非常有用,因为他可以使类的抽象性明确起来,并告诉用户和编译器打算怎样来使用他们。抽象类还是很有用的重构工具,因为他们使得我们可以很容易的将公共方法沿着继承层次结构向上移动。

通过继承来扩展接口

通过继承,可以很容易的在接口中添加新的方法声明,还可以通过继承在新接口中组合数个接口。这两种情况都可以获得新的接口。

interface Monster {  void menace();
}interface DangerousMonster extends Monster {  void destory();
}123456复制代码类型:[java]

Java中的多重继承

使用接口的核心原因:为了能够向上转型为多个基类型,以及由此带来的灵活性。

第二个原因则是和抽象基类相同:防止客户端程序创建该类的对象,并确保这仅仅只建立了一个接口。

怎么判断使用接口还是抽象类?如果要创建不带任何方法定义和成员变量的基类,那就应该使用接口。事实上,如果知道某一个事物应该成为一个基类,那么第一选择应是使他成为一个接口。

适配接口

接口最吸引人的原因之一就是允许同一个接口具有多个不同的具体实现。在简单的情况中,他的体现形式通常是接受一个接口类型的方法,而该接口的实现和向该方法传递的对象则取决于方法的使用者。

因此,接口的一种常用方法就是策略模式,此时你编写一个执行某些操作的方法,而该方法将接受一个同样是你指定的接口。你主要就是要声明:你可以用你想要的任何对象来调用我的方法,只要你的对象遵循我的接口。

接口中的域

因为你放入接口中的任何域都自动是static和final的,所以接口就成为了一种很便捷的用来创建常量组的工具。但在JavaSE5之后,你就可以使用更加强大而灵活的enum关键字。

嵌套接口

接口可以嵌套在类或者其他接口中。

class A { interface B {   void f();
 } public class BImp implements B}
(0)

相关推荐

  • Java基本概念:接口

    一.简介 描述: 普通类只有具体实现,抽象类具体实现和规范都有,接口只有规范! 接口就是比抽象类还抽象的抽象类,可以更加规范的对子类进行约束,全面专业地实现了规范和具体实现的分离. 抽象类还提供某些具 ...

  • Python和Java的六大差异!

    近年来,随着人工智能.5G时代的到来,编程语言变得更加火爆,其中Python和Java名列前茅,受到很多人的追捧.那么Python和Java有什么区别呢?我想很多人都比较好奇,接下来跟着小编来看看吧. ...

  • Java定义

    多态的定义: 多态分为编译时多态和运行时多态. 编译时多态:方法的重载 运行时多态:定义的对象引用所指向的具体类型在运行期间才能确定 运行时多态的三个条件:继承.重写.向上转型 运行时多态就是子类继承 ...

  • 解析Java编程思想--内部类

    一个类的定义可以放在另一个类的定义内,它叫做内部类.内部类是一种非常有用的特性,因为它可以让你将逻辑相关的类组织在一起,并且控制类的视觉效果.但我们必须认识到,内部类和组合是截然不同的概念.在最初,内 ...

  • 解读Java编程思想--对象导论

    电脑即机器,编程语言的产生,是机器理解现实世界的重要手段.有时,电脑就像我们的大脑,设计面向对象的程序,用计算机作为表现媒介,Java编程思想>对象导论概念性的理解如下. 抽象过程: 编程语言的 ...

  • java之写接口回调编程经验改进

    java之写接口回调编程经验改进

  • 一文介绍主流容灾技术对比,网络工程师必知!

      网   工   圈 网络工程师阿龙 圈内最早的公益公众号,关注留言板不定期公益赠送活动!(关注近6w )   关注 听说99%的网工都来这里充电 @网络工程师阿龙

  • 收藏!Java编程技巧之单元测试用例编写流程

    温馨提示:本文较长,同学们可收藏后再看 :) 前言 清代杰出思想家章学诚有一句名言:"学必求其心得,业必贵其专精." 意思是:学习上一定要追求心得体会,事业上一定要贵以专注精深.做 ...

  • 一文介绍西西里语

    西西里是什么? 西西里语(u sicilianu)既不是方言,也不是口音.它不是意大利语的变体,不是意大利语的本地版本,它甚至不是源自意大利语.事实上,就我们所知,西西里语早于意大利语. 地中海的语言 ...

  • 嵌入式开发中的两点编程思想

    嵌入式开发,除了掌握基本的编程语法之外,编程的思想也是很关键,下面说两点编程思想. 1分层思想 嵌入式分层思想,可能你不懂,但你肯定见到过很多类似下面这样的软件结构图. 比如,RT-Thread Na ...

  • 【计算机基础知识】三大编程思想

    【计算机基础知识】三大编程思想

  • C语言状态机编程思想

    有限状态机概念 有限状态机是一种概念思想,把复杂的控制逻辑分解成有限个稳定状态,组成闭环系统,通过事件触发,让状态机按设定的顺序处理事务.单片机C语言的状态机编程,是利用条件选择语句(switch.c ...