简介
像类一样,接口可以具有方法和变量,但是默认情况下,接口中声明的方法是抽象的(只有方法签名,没有主体)
-
接口指定类必须执行的操作,而不指定方法。这是该课程的蓝图。
-
接口是关于功能的,例如Player可能是接口,任何实现Player的类都必须能够(或必须实现)move()。因此,它指定了类必须实现的一组方法。
-
如果一个类实现一个接口并且不为该接口中指定的所有函数提供方法主体,则该类必须声明为抽象的。
结构:
要声明接口,请使用interface关键字。它用于提供总体抽象。这意味着默认情况下,接口中的所有方法都以空主体声明并且是公共的,并且所有字段都是公共,静态和final的。实现接口的类必须实现接口中声明的所有方法。要实现接口,需要使用Implements关键字。
interface <interface_name> {
// declare constant fields
// declare methods that abstract
// by default.
}
优点:
-
用于实现整体抽象。
-
由于Java在类的情况下不支持多重继承,但是通过使用接口,它可以实现多重继承。
它还用于实现松散耦合。 -
接口用于实现抽象。当抽象类中包含non-final变量,接口中的变量是最终变量,公共变量和静态变量。
实例:
要实现一个java接口,使用关键字implement:
// Java program to demonstrate working of
// interface.
import java.io.*;
// A simple interface
interface In1
{
// public, static and final
final int a = 10;
// public and abstract
void display();
}
// A class that implements the interface.
class TestClass implements In1
{
// Implementing the capabilities of
// interface.
public void display()
{
System.out.println("Java");
}
// Driver Code
public static void main (String[] args)
{
TestClass t = new TestClass();
t.display();
System.out.println(a);
}
}
输出:
java
10
JDK8添加的新特性
- 在JDK 8之前,接口无法定义实现。现在,可以为接口方法添加默认实现。此默认实现具有特殊用途,并且不会影响接口的意图。
假设我们需要在现有接口中添加一个新功能。显然,旧代码将无法使用,因为类尚未实现这些新功能。因此,借助默认实现,我们将为新添加的函数提供默认主体。这样旧的代码仍然可以使用。 - JDK 8中添加的另一个功能是,我们现在可以在接口中定义静态方法,这些接口可以在没有对象的情况下独立调用。注意:这些方法不是继承的