Java 接口


Java接口

什么是接口

在Java中,接口是一种抽象类型,是一种将方法的声明与方法的实现分离开的方式,接口相当于一个规范,用来规定类应该满足哪些需求。

接口中只包含方法的声明,而没有方法体,接口不能被实例化,必须由被继承的子类实现接口中的所有方法。

如何定义接口

在Java中,定义接口使用关键词interface。如下所示:

public interface InterfaceName{

// 声明方法
    public void method1();
    public int method2(String str);
}

接口中只包含方法的声明,方法的访问修饰符必须是public,缺省时默认为public。接口中不能有构造方法,也不能有非抽象方法。

一个类可以实现多个接口,使用关键字implements,如下所示:

public class ClassName implements InterfaceName1,InterfaceName2{

//实现接口中的所有方法

}

接口的实现类必须实现接口中声明的所有方法,否则这个类必须声明为抽象类。

在一个接口中可以包含一个或多个嵌套接口,如下所示:

public interface InterfaceName{

    public interface InnerInterface{
        public void method1();
    }

    public void method2();
}

接口的特性

多态性

由于Java中一个类可以实现多个接口,所以可以在同一接口数据类型声明中使用不同的实现类对其进行实例化,这就是接口的多态性。

例如:

public interface InterfaceName{
    public void method1();
}

public class Class1{
    public void method1(){
        System.out.println("Class1 implements InterfaceName");
    }
}

public class Class2{
    public void method1(){
        System.out.println("Class2 implements InterfaceName");
    }
}

public class Test{
    public static void main(String[] args){
        InterfaceName obj1 = new Class1();
        InterfaceName obj2 = new Class2();
        obj1.method1();
        obj2.method1();
    }
}

输出结果为:

Class1 implements InterfaceName
Class2 implements InterfaceName

唯一性

接口中的变量必须是public static final类型,不能修改。

例如:

public interface InterfaceName{
    public static final int num1=10;
    public static final int num2=20;
}

解耦性

通过接口隔离客户端代码和具体实现类,提高了程序的可扩展性和可维护性。在使用接口时,调用者只关心接口本身定义的行为,而不关心具体实现类,从而实现代码的解耦。

总结

Java中的接口是一种部分实现的抽象类型,使用接口将方法的声明与方法的实现分离开,提高了程序的可扩展性和可维护性。通过实现多个接口,可以实现接口的多态性,使得代码更加灵活和可复用。