接口
官方解释
接口,是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8),私有方法(JDK 9)后面在学jdk新特性
接口的定义,它与定义类方式相似,但是使用
interface
关键字。它也会被编译成.class文件,但一定要明确它并不是类,而是另外一种引用数据类型。接口的使用,它不能创建对象,但是可以被实现(
implements
,类似于被继承)。一个实现接口的类(可以看做是接口的子类),需要实现接口中所有的抽象方法,创建该类对象,就可以调用方法了,否则它必须是一个抽象
类。
语法格式:
public interface 接口名称 {
// 抽象方法
// 常量
}
接口具体语法:
接口也是一种引用类型,可以等同看做类
接口也是一种引用”数据类型”,编译之后也是一个class字节码文件,但并不是类
接口中只能出现:常量、抽象方法
public interface Interface { public static final int A=10; // 定义一个常量 double PI=3.14; // 这里定义常量省略public static final,但是系统自动会给你加上 public abstract void m1(); // 定义一个抽象方法 void m2(); // 这里定义常量省略public abstract,但是系统自动会给你加上 // 注意: 在接口中没有成员变量、方法,也无法被实例化 }
接口其实是一个特殊的抽象类,特殊在接口是完全抽象的
接口中没有构造方法,无法被实例化
接口和接口直接可以实现多继承
一个类中可以实现多个接口,(这里的”实现”可以等同看作”继承”)
一个非抽象的类实现接口,需要将接口中所有的方法”实现/重写/覆盖”
interface A { public abstract void m3(); } interface B{ public abstract void m4(); } interface C extends B,A{ public abstract void m5(); } // a类继承A,并覆盖A中的m3方法 class a implements A{ public void m3() { } } // b类继承接口c,但由于接口c中继承了a、b种方法,所以所以b类继承接口c需要将a、b、c类中所有方法进行覆盖 class b implements C{ public void m3() {} public void m4() {} public void m5() {} }
接口的作用
可以使项目分层,所有层都面向接口开发,开发效率提高了
接口使代码和代码之间的耦合度降低,就像内存条和主板的关系,变得“可插拔可以随意切换。
接口更像是一个规范两者之间的规范
如果接口和抽象类都能完成某个功能,优先选择接口
因为接口可以多实现,多继承,并且一个类除了实现接口之外,还可以去继承其他类(保留了类的继承)