zoukankan      html  css  js  c++  java
  • 函数式接口与普通接口的区别

    Java是一项面向对象的语言,所有的存在都是对象

    比如: 猫可以抽象为一个对象, 狗可以抽象为一个对象, 动物可以抽象为一个更高层级的对象

    但猫吃饭这件事, 如果用传统的Java思想来抽象,那它最应该是猫的一个行为,应该是猫对象中的一个函数/方法.

    函数式接口另辟蹊径, 就是要把行为也抽象为一个对象.

    接口声明:

    @FunctionalInterface
    public interface IAddService {
    String add ();
    }

    接口使用:

    public class App {
    public static void main (String[] args) {
    User ming = new User();
    User hong = new User();
    String mr = ming.calc(() -> {
    return "ming";
    });
    System.out.println(mr); // mr: ming
    String hr = hong.calc(() -> {
    return "hong";
    });
    System.out.println(hr); // hr: hong
    }
    }


    接口程序走向:

    1. 定义了2个人,ming和hong,它们都调用了calc方法,calc方法接收一个函数式接口实例, 调用这个函数对象的add方法,将返回值返回

    public String calc(IAddService addService){
    return addService.add();
    }

    2. 当将"()->{}"当参数传入时, 就相当于将ming的行为封装为一个IAddService实例传入了calc方法

    3. 函数式接口的效果有点类似于策略设计模式, 只不过不需要创建策略类,也不需要选择策略

    4. 函数式接口的使用有点类似于匿名内部类, 函数逻辑放在参数列表中

  • 相关阅读:
    HDU 2196 Computer
    HDU 1520 Anniversary party
    POJ 1217 FOUR QUARTERS
    POJ 2184 Cow Exhibition
    HDU 2639 Bone Collector II
    POJ 3181 Dollar Dayz
    POJ 1787 Charlie's Change
    POJ 2063 Investment
    HDU 1114 Piggy-Bank
    Lca hdu 2874 Connections between cities
  • 原文地址:https://www.cnblogs.com/wangxuejian/p/13709333.html
Copyright © 2011-2022 走看看