- 接口的概念:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因为这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
- 接口的定义
1、用interface关键字修饰类
public interface Itf {
// 默认(只能)是由public + static+ final 修饰
String str = "ADASG";
// 默认是 public + abstract
void disPlay();
// jdk8中接口新增default方法
default void def(){
System.out.println("Itf接口中的默认方法");
}
}
public class ItfImpl implements Itf{
@Override
public void disPlay() {
System.out.println("重写Itf接口的display方法");
}
public static void main(String[] args) {
ItfImpl itf = new ItfImpl();
// 此处能直接引用str说明接口中的属性默认是由static修饰的
System.out.println(str); // ADASG
// 此处报错说明接口中的属性默认是由static+final修饰的
str = str + "ab"; // Cannot assign a value to final variable 'str'
itf.disPlay(); // 重写Itf接口的display方法
itf.def(); // Itf接口中的默认方法
}
}
2、如果在实现类的一个方法和接口的default方法同名将调用实现类中的方法
public class ItfImpl implements Itf{
@Override
public void disPlay() {
System.out.println("重写Itf接口的display方法");
}
public void def(){
System.out.println("实现类的def方法");
}
public static void main(String[] args) {
ItfImpl itf = new ItfImpl();
System.out.println(str);
itf.disPlay();
itf.def(); // 实现类的def方法
}
}
3、因为接口中的方法不能有方法体,所以接口没有构造函数。如果用default的方式,将Not allowed in interface。所以接口也不能实例化。接口还能继承多个接口,如创建Itf 、Itf2 、Itf3 3个接口。但接口不能实现另一个接口。
// 接口可以继承多个接口
public interface Int2 extends Itf, Itf3 {
}
- 接口的理解:接口就是一种规范,实现了接口的类,尽管不同的类有不同的实现方式,但只要他们都实现了这个接口就说明他们符合了(适配)这个接口。