Java 接口默认和静态方法
原文:https://www.studytonight.com/java-8/java-interface-default-and-static-methods
Java 中的接口是一个用来实现抽象的概念。它只包含抽象方法,不提供任何实现,但是在 Java 8 中,通过添加默认和静态方法来改进接口。现在让我们看看什么是默认和静态方法。
默认方法
在界面内使用默认关键字声明的方法称为默认方法。这些方法是非抽象方法。添加默认方法的原因是允许开发人员向接口添加新方法,而不影响实现这些接口的类。
来看看如何在界面中声明默认方法。
interface Printable{
// Default method
default void print() {
System.out.println("Printing...");
}
}
我们可以看到上面的界面包含了一个默认的 print()方法,其中包含了 body。
我们可以在一个界面中拥有任意数量的默认方法和抽象方法,看看如何?
interface Printable{
// Default method
default void print() {
System.out.println("Printing...");
}
default void print2D() {
System.out.println("Printing 2D...");
}
// Abstract methods
void print3D();
}
示例:如何实现具有默认方法的接口
让我们举一个例子来理解具有默认方法的接口的实现。可以使用实现类对象调用默认方法。这里我们有一个可打印的接口,它包含两个默认方法和一个抽象方法。
interface Printable{
// Default method
default void print() {
System.out.println("Printing...");
}
default void print2D() {
System.out.println("Printing 2D...");
}
// Abstract methods
void print3D();
}
public class Demo implements Printable {
public void print3D() {
System.out.println("Printing 3D...");
}
public static void main(String[] args){
Demo demo = new Demo();
// Calling Default Methods
demo.print();
demo.print2D();
// Calling Abstract Methods
demo.print3D();
}
}
印刷... 印刷 2D... 3D 打印...
静态方法
像默认方法一样,接口允许向其中添加静态方法。我们可以使用 static 关键字在接口内部定义静态方法,并用于定义实用方法。来看看如何在界面中声明静态方法。
interface Printable{
// Static method
static void print() {
System.out.println("Printing...");
}
}
我们可以在接口中有任意数量的静态方法。从 Java 8 开始,接口可以包含默认的、静态的、抽象的和非抽象的方法。
示例:具有静态方法的接口
在这个例子中,我们有多个静态方法、默认方法和抽象方法。静态方法不会继承到实现类中,因此我们使用接口名称来调用它们。
interface Printable{
// Static method
static void print() {
System.out.println("Printing...");
}
static void print2D() {
System.out.println("Printing 2D...");
}
// Default Method
default void print3D() {
System.out.println("Printing 3D...");
}
// Abstract Method
void getInfo();
}
public class Demo implements Printable {
public void getInfo() {
System.out.println("This is new style Java 8 Interface");
}
public static void main(String[] args){
Demo demo = new Demo();
// Calling static Methods
Printable.print();
Printable.print2D();
// Calling default method
demo.print3D();
// Calling Abstract Methods
demo.getInfo();
}
}
印刷... 印刷 2D... 3D 打印... 这是新样式的 Java 8 接口