java8默认参数_Java 8 - 默认方法

Java 8 - 默认方法

Java 8在接口中引入了默认方法实现的新概念。添加此功能以实现向后兼容,从而可以使用旧接口来利用Java 8的lambda表达能力。例如,“List”或“Collection”接口没有“forEach”方法声明。因此,添加这种方法将简单地打破收集框架的实现。Java 8引入了默认方法,使List / Collection接口可以具有forEach方法的默认实现,实现这些接口的类不需要实现。

句法

public interface vehicle {

default void print(){

System.out.println("I am a vehicle!");

}

}

多个默认值

使用接口中的默认功能,类可能使用相同的默认方法实现两个接口。以下代码解释了如何解决这种歧义。

public interface vehicle {

default void print(){

System.out.println("I am a vehicle!");

}

}

public interface fourWheeler {

default void print(){

System.out.println("I am a four wheeler!");

}

}

第一个解决方案是创建一个覆盖默认实现的自己的方法。

public class car implements vehicle, fourWheeler {

default void print(){

System.out.println("I am a four wheeler car vehicle!");

}

}

第二个解决方案是使用super调用指定接口的默认方法。

public class car implements vehicle, fourWheeler {

default void print(){

vehicle.super.print();

}

}

静态默认方法

接口也可以具有来自Java 8的静态帮助程序。

public interface vehicle {

default void print(){

System.out.println("I am a vehicle!");

}

static void blowHorn(){

System.out.println("Blowing horn!!!");

}

}

默认方法示例

让我们看一个例子来更清楚地说明默认方法。请在代码编辑器中编写以下程序,了解并验证结果。

Java8Tester.java

public class Java8Tester {

public static void main(String args[]){

Vehicle vehicle = new Car();

vehicle.print();

}

}

interface Vehicle {

default void print(){

System.out.println("I am a vehicle!");

}

static void blowHorn(){

System.out.println("Blowing horn!!!");

}

}

interface FourWheeler {

default void print(){

System.out.println("I am a four wheeler!");

}

}

class Car implements Vehicle, FourWheeler {

public void print(){

Vehicle.super.print();

FourWheeler.super.print();

Vehicle.blowHorn();

System.out.println("I am a car!");

}

}

验证结果

使用javac编译器编译类,如下所示:

$javac Java8Tester.java

现在运行Java8Tester如下 -

$java Java8Tester

它应该产生以下输出 -

I am a vehicle!

I am a four wheeler!

Blowing horn!!!

I am a car!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值