什么是接口?
接口是一种公共的规范标准,在代码使用时接口是一种应用的数据类型,它规定了实现本接口需要实现类的一系列规范和方法。
接口的定义
接口在定义时需要加关键字 interface ,在定义时接口中可以包含常量和方法,但是方法定义时需要是抽象方法。
例如:
public interface Dome{
public abstract void methonAbs();
}
接口的使用
1.在实际使用时接口不能直接使用 ,需要运用一个实现类,对该接口的方法进行实现。
2.在实现类中需要对接口所有的抽象方法,进行实现。
3.使用时要创建实现类的对象进行使用,不能直接new接口对象。
4.接口中可以定义成员变量,但是定义的成员变量是常量
例如:
接口的测试类Test
public class Test{
public static void main(String [] args){
Domeimpl dome=new Domeinple();
dome.methonAds();
}
}
接口的实现类Domeimpl
public class Domeimpl implements Dome{
public void methonAbs(){
System.out.println("This is methonAbs Test");
}
}
接口中的其他方法
在Java 1.8 开始,在接口中允许使用默认方法、静态方法,1.9开始允许定义私有方法。
1.接口的默认方法
接口中我们允许使用默认方法,使用默认方法的好处在于,我们可以在不改变实现类的条件下完成接口的升级。当然了在实际使用中,实现类也是可以对接口的默认方法进行覆盖和重写的。
接口中默认方法的实现
public interface Dome{
public abstract void methonAbs();
//默认方法
default void methonDefault(){
//方法体
System.out.println("");
}
}
默认方法的使用
public class Test{
public static void main(String [] args){
//创建一个实现类对象
Domeimpl dome=new Domeinple();
//调用实现类实现的方法
dome.methonAbs();
//调用接口中的默认方法,在调用时会先找实现类,然后找接口
dome.methonDefault();
}
}
实现类在重写或者覆盖接口中得默认方法时,与重写其他抽象类方法相同。
2.接口中的静态方法
在接口中我们可以调用接口的静态方法,并且接口的静态方法不需要在实现类进行方法的实现,在调用时可以直接使用接口名进行调用,不需要实现类。
接口静态方法的定义
public interface Dome{
//静态方法
static void methonStatic(){
//方法体
}
}
静态方法的使用
public class Test{
public static void main(String [] args){
//调用静态方法
Dome.methonStatic();
}
}
3.接口的私有方法
在接口定义默认方法和静态方法时会出现重复的代码,为了把重复的代码提取出来且被提取出来的字段不会被接口以外的其他方法调用,为了解决这个问题,所以在Java1.9开始加入了私有方法的定义。
私有方法包括两种:普通私有方法和静态私有方法。
具体的实现是:
//普通私有方法
private [返回值类型] 方法名 (){
//方法体
}
//静态私有方法
private static [返回值类型] 方法名 (){
//方法体
}
接口定义常量的注意事项
1.在接口中可以定义“成员变量”虽然它也叫成员变量实质上是常量,值一经定义则无法再被改变。
2.接口在定义常量时 public static final 关键字可以省略,并且定义时必需赋值
3.接口常量命名时最好使用大写进行命名多个相同的可以用_隔开,例NUM_OF_LONG
4.成员变量的使用采用 接口名.变量名
接口使用时的注意事项
1.接口没有静态的代码块和构造方法
2.一个类的直接父类只有一个,但是可以有多个接口
3.实现类在使用多个接口时,需要实现接口中所有的抽象方法,若有冲突的默认方法则需要对该方法进行覆盖重写
4.继承优先于接口实现
5.接口与接口之间是多继承的