Java-回调/Callback

本文代码部分来自于:https://www.cnblogs.com/heshuchao/p/5376298.html
由于我本人增加了颇多的个人理解,所以转为原创,若有错误,请指正

代码段1.1:
public class Student	
{
private String name = null;

public Student(String name)
{
    // TODO Auto-generated constructor stub
    this.name = name;
}

public void setName(String name)
{
    this.name = name;
}

private int calcADD(int a, int b)
{
    return a + b;
}

public void fillBlank(int a, int b)
{
    int result = calcADD(a, b);
    System.out.println(name + "心算:" + a + " + " + b + " = " + result);
}
}
代码段1.2:
public class Test
{
public static void main(String[] args)
{
    int a = 1;
    int b = 1;
    Student s = new Student("小明");
    s.fillBlank(a, b);
}
}

代码段2.1:
public class Calculator
{
public int add(int a, int b)
{
    return a + b;
}
}
代码段2.2:
public class Student
{
private String name = null;

public Student(String name)
{
    // TODO Auto-generated constructor stub
    this.name = name;
}

public void setName(String name)
{
    this.name = name;
}

@SuppressWarnings("unused")
private int calcADD(int a, int b)
{
    return a + b;
}

private int useCalculator(int a, int b)
{
    return new Calculator().add(a, b);
}

public void fillBlank(int a, int b)
{
    int result = useCalculator(a, b);
    System.out.println(name + "使用计算器:" + a + " + " + b + " = " + result);
}
}

代码段2.3:
public class Test
{
public static void main(String[] args)
{
    int a = 168;
    int b = 291;
    Student s = new Student("小明");
    s.fillBlank(a, b);
}
}



代码段3.1:
public class SuperCalculator
{
public void add(int a, int b, Student  xiaoming)
{
    int result = a + b;
    xiaoming.fillBlank(a, b, result);
}
}


代码段3.2:
public class Student
{
private String name = null;

public Student(String name)
{
    // TODO Auto-generated constructor stub
    this.name = name;
}

public void setName(String name)
{
    this.name = name;
}

public void callHelp (int a, int b)
{
    new SuperCalculator().add(a, b, this);
}

public void fillBlank(int a, int b, int result)
{
    System.out.println(name + "求助小红计算:" + a + " + " + b + " = " + result);
}
}



代码段3.3:
public class Test
{
public static void main(String[] args)
{
    int a = 26549;
    int b = 16487;
    Student s = new Student("小明");
    s.callHelp(a, b);
}
}

1、2、3代码执行过程分析:
代码段1:

李寻欢

代码段2:

李寻欢

代码段3:

李寻欢

总结:

李寻欢

重点分析代码段3的回调Callback功能的实现:
李寻欢

我们从简单的加法求和中看到面向过程和面向对象的区别:
李寻欢

猜你喜欢

转载自blog.csdn.net/li_xunhuan/article/details/88990724