1. 定义: 抽象类是从多个类中抽象出来的模板,如果将这种抽象进行的更彻底,可以提炼出更加抽象的“抽象类”-----接口。
接口中不能包含普通方法,接口中所有的方法都是抽象方法。java8对接口进行了改进,允许接口中定义默认方法,默认方法可以提供实现方法。
[修饰符] interface 接口名extends 父接口1,父接口2.....
{
0-多个常量定义;
0-多个抽象方法定义;
0-多个内部类,接口,枚举定义;
0-多个默认方法或类方法定义;
}
备注:修饰符可以为public,或者省略。接口可以有多个父接口,但是接口只能继承接口,不能继承类
因为接口是一种规范,所以接口中不能包含构造器和初始化的定义,接口中可以有成员变量(静态常量),方法(抽象实例方法,类方法,默认方法),内部类(内部接口,枚举)
接口中的成员变量只能在定义时指定默认值
定义接口的方法:抽象方法,类方法,默认方法。如果不是默认方法,系统为普通方法增加abstract修饰鼓符,接口的普通方法不能有实现体,方法体,但是类方法以及默认方法必须有实现体
package com.wss.demo;
public interface interfaceTest {
public int q=0;
public static final String s=null;
//普通方法,默认使用public abstract修饰
void out();
void getData(String name);
//接口中定义默认方法,必须使用default修饰,不能使用static修饰。不能使用接口直接调用默认方法。需要使用接口的实现类的实例来
//调用默认方法
default void print(String...msgs){
for(String msg:msgs){
System.out.println(msg);
}
}
default void test(){
System.out.println("==");
}
//接口中定义类方法,需要static修饰,类方法可以使用接口直接调用
static String staticTest(){
System.out.println("==");
return "接口中的类方法";
}
}
2.接口的继承:
接口支持多继承
3.使用接口
接口不能用于创建实例,但是接口可以用于声明引用类型的变量,当使用接口来声明引用类型变量时,引用类型的变量必须引用到其实现类的对象
定义变量,调用接口中定义的常量,被其他类实现
一个类可以实现一个或者多个接口,
类实现接口的语法格式如下:
继承使用extends关键字,实现使用implements关键字
类实现接口的语法格式
class 类名 extends 父类 imlenents 接口1,接口2{
类体部分
}
一个类实现一个或者多个接口后,这个类必须完全实现这些接口里所定义的全部抽象方法,(重写这些方法)否则,该类保留从父类接口继承的抽象方法,该类定义为抽象类。