含义:
是一个引用数据类型,一种标准.
注意:
public abstract在接口内可以不写,默认会带有这两个关键字
如果类实现接口,必须重写接口内的所有方法
用法:
USB(接口):
public interface USB {
public abstract void open();
public abstract void close();
}
Mouse(实现类):
public class Mouse implements USB {
@Override
public void open() {
System.out.println("鼠标打开");
}
@Override
public void close() {
System.out.println("鼠标关闭");
}
}
Test1测试方法:
public class Test1 {
public static void main(String[] args) {
Mouse mouse = new Mouse();
mouse.open();
mouse.close();
}
}
默认方法(JDK7+):
//USB.java
public interface USB {
public abstract void open();
public abstract void close();
public default void d(){
System.out.println("默认方法");
}
}
//Mouse.java
public class Mouse implements USB {
@Override
public void open() {
System.out.println("鼠标打开");
}
@Override
public void close() {
System.out.println("鼠标关闭");
}
@Override
public void d(){
System.out.println("我是默认方法的重写");
}
}
//Test1.java
public class Test1 {
public static void main(String[] args) {
Mouse mouse = new Mouse();
mouse.open();
mouse.close();
mouse.d();//调用默认方法
}
}
默认方法可以重写也可以不重写
静态方法(JDK8+):
//Test1
public class Test1 {
public static void main(String[] args) {
Mouse mouse = new Mouse();
mouse.open();
mouse.close();
mouse.d();//调用默认方法
USB.s();//调用静态方法
}
}
//USB
public interface USB {
public abstract void open();
public abstract void close();
public default void d(){
System.out.println("默认方法");
}
public static void s(){
System.out.println("静态方法");
}
}
默认方法和静态方法可以作为临时加一个小功能来使用
成员变量:
public static final 数据类型 数据名 = 值;
final代表最终的,不可二次赋值,可以视为常量
注意:
public static final不写在接口中也默认会有
接口内的成员变量必须手动赋值,不能不赋值,会报错
接口内成员变量的数据名按照规范要写为大写!
特点:
接口可以继承多个接口
public interface InterfaceA extends InterfaceB,InterfaceC{}
可以同时加入多个接口
public interface InterfaceImpl implements InterfaceB,InterfaceC{}
一个子类也可以同时实现多个接口
public class ziLei extends fuLei implements InterfaceB,InterfaceC{}
注意:
如果多个接口里有相同名称的方法,那么只需要重写一次
比如InterfaceA和InterfaceB里面都有一个abc方法
那么在实现类里面,只需要重写一次abc方法即可
如果实现多个接口时,有默认方法重名且传参一样的,那么必须重写一次默认方法!
接口和抽象的区别
相同点:
都是在继承体系的最顶层
都不能new创建对象
都包含抽象方法,都必须重写抽象方法
不同点:
抽象类:一般作为父类使用,可以有成员变量,构造器,成员方法,抽象方法等
接口:成员单一,一般抽取接口,抽取的都是方法,视为功能的集合
类不能多继承,接口可以多继承