接口概述:
接口是Java语言中的一种引用类型,是方法的"集合",所以接口的内部主要就是定义方法,包含常量,抽象方法(JDK 7及以前),额外增加默认方法和静态方法(JDK 8),额外增加私有方法(jdk9)。
接口的定义,它与定义类方式相似,但是使用 interface
关键字。它也会被编译成.class文件,但一定要明确它并不是类,而是另外一种引用数据类型。
public class 类名.java–>.class
public interface 接口名.java–>.class
接口的使用,它不能创建对象,但是可以被实现(implements
,类似于被继承)。一个实现接口的类(可以看做是接口的子类),需要实现接口中所有的抽象方法,创建该类对象,就可以调用方法了,否则它必须是一个抽象类。
定义格式
public interface 接口名称 {
// 常量
// 抽象方法
// 默认方法(jdk8)
// 静态方法(jdk8)
// 私有方法(jdk9)
}
案例
public interface IA {
// 常量 默认修饰符 public static final 这三个修饰符可以省略
public static final int NUM1 = 10;
int NUM2 = 20;
// 抽象方法 默认修饰符 public abstract 这2个修饰符可以省略
public abstract void method1();
void method2();
// 默认方法 默认修饰符 public default public修饰符可以省略,default不可以省略
public default void method3(){
System.out.println("默认方法 method3");
}
default void method4(){
System.out.println("默认方法 method4");
}
// 静态方法: public static修饰 static修饰符不可以省略 public可以省略
public static void method5(){
System.out.println("静态方法 method5");
}
// 私有静态方法 使用private static修饰 不可以省略
private static void method6(){
System.out.println("私有静态方法 method6");
}
// 私有非静态方法 使用private修饰
private void method7(){
System.out.println("私有静态方法 method7");
}
}
public class Test {
public static void main(String[] args) {
System.out.println(IA.NUM1);// 10
}
// 类中的默认方法,使用默认权限修饰符(空)
void method(){
}
}
接口中成员的访问特点
接口中成员访问特点概述
接口中成员的访问特点:
接口中的常量: 主要是供接口直接使用
接口中的抽象方法: 供实现类重写的
接口中的默认方法: 供实现类继承的(实现类中可以直接调用,实现类对象也可以直接调用)
接口中的静态方法: 只供接口直接调用,实现类继承不了
接口中的私有方法: 只能在接口中直接调用,实现类继承不了
案例演示
public interface IA {
// 接口中的常量: 主要是供接口直接使用
public static final int NUM = 10;
// 接口中的抽象方法: 供实现类重写的
public abstract void method1();
// 接口中的默认方法: 供实现类继承使用(实现类中可以直接调用,实现类对象也可以直接调用)
public default void method2(){
System.out.println("默认方法method2");
method4