【有书共读】Java攻略 读书笔记06

接口中的默认方法

    java之所以不支持多继承,是为了避免所谓的砖石问题。为了避免一个类与多种类型都具有"某种"关系,java引入接口作为解决方案。由于接口只包含了抽象方法,不存在互相冲突的实现,接口允许多继承,是因为只有方法签名被继承。

    从java 8开始,只需将某个方法的声明为default并提供一个实现,就能为接口方法添加实现。

//Employee接口包含默认方法
public interface Employee{
    String getFirst();
    String getLast();
    void convertCaffeineToCodeForMoney();
    //getName方法由关键字default声明,其实现取决于Employee接口的另外两种抽象方法getFirst和getLast
    default String getName(){
        return String.format("%s,%s",getFirst(),getLast());
    }
}
//默认方法的应用
List<Integer> nums = new ArrayList();
nums.add(-3);
nums.add(1);
nums.add(4);
nums.add(-1);
nums.add(5);
nums.add(9);
//使用Collection接口定义的默认方法removeIf
boolean removed = nums.removeIf(n->n<=0);
//使用Iterator接口定义的默认方法forEach
System.out.println("Elements were"+(removed ? "":"NOT")+"removed");
nums.forEach(System.out::println)

接口中的静态方法

    在java 8中,我们可以随时为接口添加静态方法,步骤如下:

  • 为方法提供static关键字

  • 提供一种无法被重写的实现,此时,静态方法类似于默认方法,包含在javadoc的default Methods(默认标签)中

  • 通过接口名访问方法,类不需要通过实现接口来使用静态方法

由于接口中有静态方法,我们不必创建单独的工具类,但需要的话,依旧可以创建工具类,但必须注意:

  • 静态方法必须有一个实现

  • 无法重写静态方法

  • 通过接口名调用静态方法

  • 无需通过接口以使用静态方法

#Java##笔记##读书笔记#
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务