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. 函数式接口的使用有点类似于匿名内部类, 函数逻辑放在参数列表中

  • 相关阅读:
    list切片
    class面向对象编程学习笔记
    斐波那契数
    module学习笔记
    Python基础
    产品经理培训行业---以起点学院为主体的相关竞品分析报告
    基础数据结构-二叉树-赫夫曼树的构建与编码
    大众点评APP分析随笔
    滴滴拼车功能分析
    梅沙教育APP简单分析-版本:iOS v1.2.21-Nathaneko-佳钦
  • 原文地址:https://www.cnblogs.com/wangxuejian/p/13709333.html
Copyright © 2011-2022 走看看