接口的概述及其基本特点
接口,是Java语言中的一种引用类型,接口的内部主要封装了方法,包含抽象方法(JDK7及其以前)、默认方法和静态方法(JDK8)、私有方法(JDK9)。
接口的定义和类的定义相似,和类时同级别的,使用interface关键字修饰,同时也会被编译成class文件,但一定要明确它不是类,而是一种引用数据类型。
public interface 接口名{
//抽象方法;
//默认方法;
//静态方法;
//私有方法;
}
接口的特点:
①接口中无法定义成员变量,但是可以定义常量,其值不可改变,默认使用public static final修饰;
②接口中没有构造方法,不能创建对象;
③接口中没有静态代码块。
接口中的抽象方法(JDK7及其以前)
接口中的抽象方法用abstract关键字修饰,没有方法体,供实现类实现使用。
public interface User {
//抽象方法
public abstract void method();
}
接口中的默认方法和静态方法(JDK8)
接口中的默认方法:使用default关键字修饰,不可省略,供实现类对象调用或实现类重写,默认权限修饰符是public。
接口中的静态方法:使用static关键字修饰,供接口直接调用.
public interface User {
//默认方法
public default void method1() {
System.out.println("接口中的默认方法执行成功");
}
//静态方法
public static void method2() {
System.out.println("接口中的静态方法执行成功");
}
}
接口中的私有方法(JDK9)
JDK9诞生的这个新技术主要是为了提高代码的复用性,如果接口中的默认方法和静态方法中有重复的内容需要书写很多遍,那么我们可以吧共性的内容放到私有方法中,这样可以减少代码的书写,并且私有方法只能在本接口中使用,更加安全。
私有非静态方法:只有默认方法可以调用。
私有静态方法:默认方法和静态方法都可以调用。
public interface User {
//私有方法
private void method(){
System.out.println("接口中的私有方法执行成功");
}
}
接口的基本实现
实现接口的类称为接口的实现类,也可以称为接口的子类,实现的格式与继承相仿,只是关键字不同,实现的关键字是implements。
在继承体系中,一个类只能继承一个父类,而在接口体系中,一个类可以同时实现多个接口。
class 类名 [extends 父类名] implements 接口名1,接口名2,接口名3... {
// 重写接口中抽象方法【必须】
// 重写接口中默认方法【不重名时可选,重名时则必须重写】
}
如果一个类的父类中的成员方法和接口中的默认方法同名,则该类会优先使用父类中的方法。