接口

接口

接口的概念

是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么接口的内部主要就是封装了抽象方法,静态常量,(在JDK8之后)接口里面又可以定义静态方法,与默认方法.

什么是接口

接口定义 : 接口的定义,它与定义类方法相似,但是使用interface关键字。它也会被编译成 .class文件,但一定要明确它不是类,而是另外一种引用数据类型。

public interface Animal{
//内容
}
  • 接口指明了一个类必须要做什么和不能做什么,相当于类的蓝图。
  • 一个接口就是描述一种能力,比如“运动员”也可以作为一个接口,并且任何实现“运动员”接口的类都必须有能力实现奔跑这个动作(或者implement move()方法),所以接口的作用就是告诉类,你要实现我这种接口代表的功能,你就必须实现某些方法,我才能承认你确实拥有该接口代表的某种能力。
  • 如果一个类实现了一个接口中要求的所有的方法,然而没有提供方法体而仅仅只有方法标识,那么这个类一定是一个抽象类。(必须记住:抽象方法只能存在于抽象类或者接口中,但抽象类中却能存在非抽象方法,即有方法体的方法。接口是百分之百的抽象类)
  • 一个JAVA库中接口的例子是:Comparator 接口,这个接口代表了“能够进行比较”这种能力,任何类只要实现了这个Comparator接口的话,这个类也具备了“比较”这种能力,那么就可以用来进行排序操作了。

为什么接口

  • 接口被用来描述一种抽象。
  • 因为Java不像C++一样支持多继承,所以Java可以通过实现接口来弥补这个局限。
  • 接口也被用来实现解耦。
  • 接口被用来实现抽象,而抽象类也被用来实现抽象,为什么一定要用接口呢?接口和抽象类之间又有什么区别呢?原因是抽象类内部可能包含非final的变量,但是在接口中存在的变量一定是final,public,static的。

接口的语法实现
为了声明一个接口,我们使用interface这个关键字,在接口中的所有方法都必须只声明方法标识,而不要去声明具体的方法体,因为具体的方法体的实现是由继承该接口的类来去实现的,因此,接口并不用管具体的实现。接口中的属性默认为Public Static Final.一个类实现这个接口必须实现这个接口中定义的所有的抽象方法。

一个简单的接口就像这样:拥有全局变量和抽象方法

为了实现这个接口,我们使用implements关键词去实现接口:

接口2

其中testClass类实现了我们上面刚才定义的 in1 这个接口,既然你要实现接口,也就是实现接口代表的一种能力,那么你就必须去实现接口给你规定的方法,只有把接口给你规定的抽象方法都给实现了,才承认你这个类实现了这个接口,实现了这个接口代表的某种功能。上图实现了接口中规定的display()方法。

接口的好处

1. 定义行为契约

  • 规范实现:接口定义了一系列的方法,用于规范类的实现方式。类只需实现接口中所规定的方法即可,从而保证了类的一致性和可替代性。这有助于在大型项目中维护代码的规范性和一致性。
  • 命名规范:接口还帮助限制命名规范,防止开发人员随意命名导致代码难以理解。

2. 实现多态性

  • 灵活性提升:接口提供了一种实现多态性的方式。一个类可以同时实现多个接口,从而具备多个不同的行为。通过接口实现的多态性,提高了代码的灵活性和可扩展性。
  • 易于扩展:当需要为某个类添加新的功能时,可以通过让该类实现新的接口来实现,而无需修改类的现有代码,降低了功能扩展的风险。

3. 减少耦合性

  • 解耦:接口可以将类的实现和使用分离开来,减少了类之间的耦合度。其他类只需要知道接口的方法签名和返回类型即可,不需要了解具体的实现细节。这样一来,类与类之间的关系更加松散,代码更易于维护和扩展。
  • 松耦合设计:接口是实现软件松耦合的重要手段,它描述了系统对外的所有服务,而不涉及任何具体的实现细节,增强了系统的安全性和严密性。

4. 代码重用性

  • 复用代码:接口提供了一种方便的代码重用方式。通过定义一个接口,然后在多个类中实现该接口,可以使这些类具备相同的行为,从而避免了代码的冗余。
  • 组合功能:这种方式提供了一种组合的方式来构建复杂的功能,使得系统更加模块化和易于维护。

5. 易于维护和扩展

  • 维护方便:接口提供了一种清晰的行为契约,使得代码更易于理解和维护。通过规范类的行为方式,接口可以帮助开发人员更好地理清类与类之间的关系,并确保代码的正确性和一致性。
  • 扩展简单:当需要为系统添加新功能时,可以通过定义新的接口或扩展现有接口来实现,而无需修改现有代码,从而降低了维护成本。

接口和多态的关系

  1. 接口是实现多态的基础:接口定义了对象的行为规范,不同的类可以通过实现相同的接口来提供不同的行为实现。这样,我们就可以通过接口的引用来操作实现了该接口的不同类的对象,从而实现多态。
  2. 多态增强了接口的灵活性:多态允许我们编写更加通用和灵活的代码,因为我们可以编写针对接口编程的代码,而不是针对具体的类。这样,当我们需要引入新的类来实现相同的功能时,只需让这个新类实现相同的接口,而无需修改原有的代码。
  3. 接口和多态共同促进了面向对象的设计原则:接口和多态共同支持了面向对象设计中的开闭原则(Open-Closed Principle)、里氏替换原则(Liskov Substitution Principle)等,这些原则旨在提高软件的可维护性、可扩展性和复用性。
posted @ 2024-08-02 20:44  坤坤真爱粉  阅读(48)  评论(0)    收藏  举报