Java接口

  1. 接口 (interface)在Java中表示一种规范或契约,它定义了一组抽象方法和常量,用来描述一些实现这个按口的类应该具有哪些行为和属性 接口和类一样,也是一种引用数据类型
  2. 接口怎么定义? [修饰符列表]interface 接口名仆}
  3. 抽象类是半抽象的,接口是完全抽象的。接口没有构造方法,也无法实例化
  4. (JDK8之前的语法规则)接口中只能定义:常量+抽象方法:接口中的常量的static final可以省略。接口中的抽象方法的abstract可以省略。接口中所有的方法和变量都是public修饰的
  5. 接口和接口之间可以名继承
  6. 类和接口的关系我们叫做实现(这里的实现也可以等同看做继承)。使用implements关键字进行接口的实现。
  7. 一个非抽象的类实现接口必须将接口中所有的抽象方法全部实现(强制要求的,必须的,要不然编译器报错。)
  8. 一个类可以实现多个接口。语法是:class类implements 接口A,接口B{}
  9. Java8之后,接口中允许出现默认方法和静态方法(JDK8新特性)
  • 默认方法:引入默认方式是为了解决接口演变问题:接口可以定义抽象方法,但是不能实现这些方法。
    所有实现接口的类都必须实现这些抽象方法。这会导致接口升级的问题:当我们向接口添加或删除一个抽象方法时,
    这会破坏该接口的所有实现,并且所有该接口的用户都必须修改其代码才能适应更改。这就是所谓的"接口演变”问题
  • 静态方法:注意:java中规定,在JDK8之后,接口中可以一定静态方法,但是这个静态方法,只能通过“该接口名”去调用的。别的都无法调用。
    在JDK8之后引入接口可以定义静态方法,实际上想表达一个意思:接口也可以作为工具来使用了。
  1. JDK9之后允许接口中定义私有的实例方法(为默认方法服务的)和私有的静态方法(为静态方法服务的)
  2. 所有的接口隐式的继本0bject。因此接口也可以调用0bject类的相关方法

<----------------------------------------------------------------------------->
抽象类和接口虽然在代码角度都能达到同样的效果,但适用场景不同:

  1. 抽象类主要适用于公共代码的提取。当多个类中有共同的属性和方法时,为了达到代码的复用,建议为这几个类提取出来一个父类,在该父类中编写公共的代码。如果有一些方法无法在该类中实现,可以延迟到子类中实现。这样的类就应该使用抽象类。
  2. 接口主要用于功能的扩展。例如有很多类,一些类需要这个方法,另外一些类不需要这个方法时,可以将该方法定义到接口中。需要这个方法的类就去实现这个接口,不需要这个方法的就可以不实现这个接口。接口主要规定的是行为
posted @ 2025-07-15 16:46  如夢初醒  阅读(12)  评论(0)    收藏  举报