jdk1.8之--接口

jdk1.8对java接口的定义添加了新特性,比如可以有默认的实现方法,以及静态方法(或者称为类方法)。这里对java在jdk1.8中的相关特性,以及使用方法做个简单的总结。

接口用法以及注意事项

首先来看一个简单的例子:

public interface RenderService {

   //默认为public static final

   int pc_page = 0;

   //默认为public abstract

   void render();

   //默认是public

  default void cache(){

       System.out.println("接口default方法:缓存页面");

    }

   //静态方法,默认是public

   static void cdn(){

       System.out.println("接口静态方法:推送cdn缓存");

    }

}

可以看到,在接口中可以定义如下4种类成员:

1、常量:接口中定义的常量默认就是被publicstatic final修饰(并且只能被public static final修饰),也就是“全局静态常量”。可以直接通过类名(或者说接口名)访问。

2、普通方法:接口中定义的普通方法默认是被publicabstract修饰(并且只能被public abstract修饰),需要由实现类实现该方法。

3、default方法:接口中定义的default方法默认是被public修饰(并且只能被public修饰),由于已经提供了默认方法,实现类可以直接使用也可以重写。

4、静态方法:接口可以看做是一种特殊的类,也可以称之为类方法,默认是被public修饰(并且只能被public修饰)。

需要注意的是在接口中不能定义default static方法。

代码测试

对应接口中的常量和静态方法,可以直接通过接口名调用,无需创建实现类对象。但如果要使用普通方法和default方法就必须创建实现类对象,通过该对象进行调用。针对上面的接口,可以通过如下的main方法进行测试:

public class Main {

   public static void main(String[] args) {

       //使用常量

       System.out.println("接口常量:"+RenderService.pc_page);

       //使用静态方法

       RenderService.cdn();

       //也可以用Lambda表达式

       //RenderService renderService = ()-> System.out.println("子类实现方法:渲染页面");

       RenderService renderService = new TestRenderService();

       //使用default方法

       renderService.cache();

       //使用实现类方法

       renderService.render();

    }

}

class TestRenderService implementsRenderService{

   @Override

   public void render() {

       System.out.println("子类实现方法:渲染页面");

    }

}

在测试代码中可以看到可以直接通过RenderService类名使用常量和静态方法,而接口中定义的default方法和普通方法,必须通过实现类TestRenderService的对象进行调用。

总结

Jdk1.8中接口的新特征,主要是把抽象类中的部分特征提取到接口中。在某些情况下,可以直接用接口来代替抽象类,使接口的使用更加灵活。但不能说接口就能完全替代抽象类,毕竟他们的作用不同。

接口的作用是制订一种通用规范(这也是为什么接口中的所有方法和常量都是public的)。

抽象类的作用是对普通类进行一步的公共抽象提取。

从另外一个方面讲,Jdk1.8中接口的新特征 可以保证代码的向前兼容。比如:在老接口中加入新的方法(static方法或者default方法)后,以前老的实现类无需做任何调整(如:在jdk1.8中的List接口中,新增了replaceAll和sort方法 并添加了默认实现)。



  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值