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

开课吧开课吧锤锤2021-07-08 10:51

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

Java编程思想

    接口

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

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

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

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

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

    抽象类和抽象方法

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

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

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

abstrac tvoid f();

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

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

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

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

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

    通过继承来扩展接口

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

interface Monster {
  void menace();
}
interface DangerousMonster extends Monster {
  void destory();
}

    Java中的多重继承

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

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

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

    适配接口

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

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

   接口中的域

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

    嵌套接口

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

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

    以上就是开课吧广场小编为大家整理发布的“一文介绍Java编程思想--接口”一文,更多Java教程相关内容尽在开课吧广场Java教程频道。

免责声明:本站所提供的内容均来源于网友提供或网络搜集,由本站编辑整理,仅供个人研究、交流学习使用。如涉及版权问题,请联系本站管理员予以更改或删除。
有用
分享
全部评论快来秀出你的观点
登录 后可发表观点…
发表
暂无评论,快来抢沙发!
高并发编程训练营