Java8新特性之接口

本文介绍了Java8中接口的新特性,包括默认方法和静态方法。默认方法允许在接口中定义具体实现,简化了已有接口的扩展。静态方法则提供了一种在接口中使用静态上下文的方式。

在JDK8以前,我们定义接口类中,方法都是抽象的,并且不能存在静态方法。所有的方法命名规则基本上都是 public [返回类型] [方法名](参数params) throws [异常类型] {}。 JDK8为接口的定义带来了一些新的改变——接口中可以定义默认(default)方法和静态(static)方法。接下来我们来看看这两个新特性吧~~

1.default方法

上代码!(说实话,多BB啥的还不如老老实实两行代码来的简单实际)

public interface Calculate {
    int add(int a, int b);

    double divide(int a, int b);
}

现在我们要实现这个接口的话,JDK1.8以前肯定是这么写的

public class CalculateImpl implements Calculate {
    @Override
    public int add(int a, int b) {
        return a + b;
    }

    @Override
    public double divide(int a, int b) {
        return a/b;
    }
}

然后我们调用计算接口

public static void main(String[] args) {
    Calculate calculate = new CalculateImpl();
    int x = calculate.add(1,2);
    double y = calculate.divide(3, 1);
    System.out.println("add: " + x +", divide: "+ y);
}

好了,这个时候突然来了个新功能,我们要新增一个方法, 实现(两个数的和)*(两个数的商),而现在这个Calculate 接口又有很多实现的方法,JDK1.8之前,我们要在接口定义一个方法,然后每个实现类都要去实现这个方法,代码修改量很大。而有了default方法, 我们可以直接在Calculate接口新增一个方法

  default double hybrid(int a, int b){
        return add(a,b) * divide(a,b);
    }

这样就可以直接在接口实现类中调用default 方法,接口的实现都不需要改变。如果有实现方式不同的,可以重写方法进行相应的实现。 #####总结:

  • (1)default方法可以被子接口继承亦可被其实现类所调用。
  • (2)default方法被继承时,可以被子接口覆写

2.static方法

接口里的静态方法,即有static修饰的方法不会被继承或者实现,但是静态变量会被继承。 在Calculate接口写一个静态方法。

  //生成min-max的随机整数
    static int randomNum(int min, int max){
        return new Random().nextInt(max-min+1)+min;
    }

调用只需要Calculate.randomNum(min, max)就行了。

好了,关于Java8接口的新特性就介绍到这里了。

转载于:https://my.oschina.net/liululee/blog/1860871

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值