官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
我的解释:接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成。接口是解决Java无法使用多继承的一种手段,但是接口在实际中更多的作用是制定标准的。或者我们可以直接把接口理解为100%的抽象类,既接口中的方法必须全部是抽象方法。(JDK1.8之前可以这样理解)
接口:即是特殊的抽象类!
- 接口指明了一个类必须要做什么,相当于类的蓝图。
-
体现了现实世界中"如果你是这类事物…则必须完成某些行为…"的思想。
-
接口就是体现规范的,其中用抽象方法定义的一组行为规范,接口是更加彻底的抽象。
- 接口是用来被类实现(implements)的,实现接口的类称为实现类。实现类可以理解成所谓的子类,接口理解成所谓的特殊父类。
- 就像一个类一样,一个接口也能够拥有方法和属性,但是在接口中声明的方法默认是抽象的。(即只有方法标识符,而没有方法体)。
-
/** 实现类(子类) */ public class PingPongMan implements SportMan , Law{ private String name; public PingPongMan(String name) { this.name = name; } @Override public void rule() { System.out.println(name + "要遵章守法,不能随意外出,酗酒,约会~~~"); } @Override public void run() { System.out.println(name + "必须要跑步训练~~"); } @Override public void competition() { System.out.println(name + "需要参加国际比赛~~"); } }
-
/** 接口 */ public interface SportManInterface { // 接口中的成员:JDK 1.8之前只有常量 和 抽象方法 // 1、常量 // public static final 可以省略不写,接口默认会为你加上! // public static final String SCHOOL_NAME = "黑马"; String SCHOOL_NAME = "黑马"; // 不是成员变量,是常量,必须初始化值! // 2、抽象方法 // public abstract 可以省略不写,接口默认会为你加上! // public abstract void run(); void run(); // public abstract void eat(); void eat(); }
- 类和类的关系:单继承。
- 类和接口的关系:多实现。
- 接口和接口的关系:多继承,一个接口可以同时继承多个接口。