码迷,mamicode.com
首页 > 编程语言 > 详细

c++与java中的回调函数

时间:2016-05-13 13:35:18      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:

  首先,说明一下,因为java中没有指针的概念,所以java与c++中回调函数虽然原理差不多,但是实现方法不同。

  说实话,如果c++是简单暴力直接的话,java更像一个小姑娘扭扭捏捏,本人也是过了很多次才了解到这个用法。。。。

 1.c++

  c++中的简单极了,只要将要调用的函数地址传给函数指针即可,简单明了。如下

  

#include <iostream>

using namespace std;

void pig()
{
   cout << "猪在叫叫叫!!" << endl;
}

void dog(void (*call)())
{
    call();
}

int main()
{
    dog(pig);
}

  确实很简单,函数pig()将自己的地址传到dog()中,然后通过函数指针调用函数(c++中,函数指针加"()"就等于调用函数指针指向的函数)。

 2.java

  java中就比较蛋疼了,有时候并不是那么明显

  技术分享

  这是项目结构,分清楚点,以下是代码

  a.java

  

package javaapplication2;

public interface a {
    public void bark();
}

  b.java 

  

package javaapplication2;

public class b {
    private a dog;
    public b(a dog){
        this.dog = dog;
        dog.bark();
    }
}

  c.java

  

package javaapplication2;

public class c implements a{

    @Override
    public void bark() {
        System.out.println("哈哈,我很快乐");
    }
    
}

 zhuhanshu.java

 

package javaapplication2;

public class zhuhanshu {
    public static void main(String[] args) {
        b dd = new b(new c());
    }
}

 然后呢,原理很简单。就是b要调用a的一些方法才能实现一些功能,但是呢,可能a的方法已经被想出来了,但是暂时没有实现,于是b根据a中方法的返回值和要传递的参数来使用。等到真正起作用的时候,那就是有人要实现a中方法的时候了。于是,c实现了它的方法。然后在主函数中调用的时候,将c的实例传过去。不明白的话,可以通过IDE的debug功能自己调试调试,很快就会明白。

c++与java中的回调函数

标签:

原文地址:http://www.cnblogs.com/xushu/p/5487433.html

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!