Java 8 使我们能够通过使用 default 关键字向接口添加非抽象方法实现
interface Test{
double calculate(int a);
default double sqrt(int a) {
return Math.sqrt(a);
}
}
Test 接口中除了抽象方法计算接口公式还定义了默认方法 sqrt。 实现该接口的类只需要实现抽象方法 calculate。 默认方法sqrt 可以直接使用。
public class Main {
public static void main(String[] args) {
// 通过匿名内部类方式访问接口
Test test= new Test() {
@Override
public double calculate(int a) {
return sqrt(a * 100);
}
};
System.out.println(formula.calculate(100)); // 100.0
System.out.println(formula.sqrt(16)); // 4.0
}
}
在Java语言中,default
关键字主要有两个用途:
1. 在接口中定义默认方法:
在Java 8之后,接口可以包含默认方法。这些方法在接口内部提供了一个默认的实现,这样在实现这个接口的类中就不需要再提供实现。默认方法通过使用default
关键字进行声明。例如:
public interface MyInterface {
default void myDefaultMethod() {
System.out.println("This is a default method.");
}
}
在这个例子中,任何实现MyInterface
的类都会获得myDefaultMethod
方法的默认实现。
2. 在switch语句中:
default
关键字用在switch语句中时,表示当所有case都不匹配时执行的代码块。例如:
int number = 3;
switch (number) {
case 1:
System.out.println("One");
break;
case 2:
System.out.println("Two");
break;
default:
System.out.println("Other");
break;
}
在这个例子中,如果number
不等于1也不等于2,那么就会执行default
代码块。
总的来说,default
关键字为Java提供了更灵活的机制,使得在接口中定义一些默认行为或在switch语句中处理不匹配的情况变得更加方便。