JAVA学习日志之接口

面向对象的特点主要概括为抽象性、继承性、封装性、多态性

  • 抽象性——指对现实世界中某一类实体或事件进行抽象,从中提取共同信息,找出共同规律,反过来又把它们集中在一个集合中,定义为所设计目标系统中的对象。
  • 继承性——新的对象类由继承原有对象类的某些特性或全部特性而产生出来,派生类可以直接继承基类的共性,又允许派生类发展自己的个性。继承性简化了对新的对象类的设计。
  • 封装性——指对象的使用者通过预先定义的接口关联到某一对象的服务和数据时,无需知道这些服务是如何实现的。即用户使用对象时无需知道对象内部的运行细节。这样,以前所开发的系统中已使用的对象能够在新系统中分析、设计和编程的工作量,同时实现了信息隐藏。
  • 多态性——指不同类型的对象可以对相同的激励做出适当的不同响应的能力。多态性丰富了对象的内容,扩大了对象的适应性,改变了对象单一继承的关系。

抽象类是从多个类中抽象出来的模板,如果将这种抽象进行得更彻底,则可以提炼出一种更加特殊的“抽象类”——接口。接口里不能包含普通方法,这和抽象类不同,在接口中,所有的方法都必须是抽象的。接口的概念就是建立在封装的基础之上的,而接口的继承,多态以及接口在实际开发中的普遍应用,足以让其集Java面向对象特点为一体。

让规范和实现相分离,这就是使用接口的主要目的,更进一步说,有了接口,可使软件系统中各组件之间面向接口耦合,这是一种松耦合的设计,为系统提供更好的可扩展性和可维护性。可以说,接口使得即插即用在程序里成为可能。因此接口定义的是多个类共同的公共行为规范,这些行为是与外部交流的通道,这就意味着接口里通常是定义一组公用的未实现的方法。

接口的用法

接口使用的关键字不是class(确切地说接口只是一个规范,不再是一个有具体功能实现的类),定义一个接口需要使用interface关键字。

  • 接口的成员列表只能包含方法(其实是没有实现的抽象方法)及常量,而且常量必须在接口中定义的时候就初始化
  • 接口的所有成员默认都是public的,不再允许使用其他修饰符
  • 接口没有构造方法,也就是说,接口和抽象类一样不能创建自己的对象,但是它们均可以引用实现类(子类)对象
  • 接口可以继承接口,和类不同的是,接口继承其他接口的时候,是可以多继承的
  • 所有的接口实现类,当实现接口中的抽象方法时,其修饰符必须是public的

接口与抽象类

接口与抽象类看似相仿,其实它们还是有很大区别的。抽象类提供更多的是一种模板,子类继承父类、完善父类,体现的是一种对半成品加工改造完善为成品的过程,抽象类有助于代码复用。而接口体现的是一种对接口规定实现类必须要向外提供什么服务,接口有助于架构的分层。在一个程序中使用接口是,接口是多个模块间的耦合标准,在多个应用程序之间使用接口,接口是多个程序之间的通信标准,所以接口一旦定义,就不应频繁变动,否则牵一发而动全身,可能系统的大部分类都要重写。

你可能感兴趣的:(JAVA)