自学内容网 自学内容网

深入Android架构(从线程到AIDL)_30 JNI架构原理_Java与C的对接03

目录

2.4 以C结构表达类(class),并创建对象(object)

认识C函数指针

范例

2.5 在C函数里存取对象的属性(attribute)

范例


2.4 以C结构表达类(class),并创建对象(object)

认识C函数指针
  • struct里不能定义函数本身,但能定义函数指针(function pointer)属性。

        这个hello就是一个函数指针属性了。

范例
  • 兹以C来定义一个Light类(class),创建其对象(object),并调用其函数。
  • 定义Light类
  • 撰写函数:
static void turnOn(){
    printf(“ON” );
}

static void turnOff() 
{
    printf(“OFF” ); 
}

struct Light * LightNew(){ // 構造式
    struct Light *t;
    t = (Light *)malloc(sizeof(Light));
    t->turnOn = turnOn;
    t->turnOff = turnOff;
    return (void*) t;
}
  • 创建对象,调用函数:
void main() {
    Light *led = LightNew();
    led->turnOn();
    led->turnOff();
}

 

2.5 在C函数里存取对象的属性(attribute)

  • 刚才调用C函数时,其函数并没有存取(access)对象里的属性或数据。
范例
  • 定义Light类
  • 撰写函数:
    static void turnOn( Light *cobj ){
        cobj->state = 1;
        printf(“ON” );
    }
    
    static void turnOff( Light *cobj ) {
        cobj->state = 0;
        printf(“OFF” );
    }
    
    struct Light *LightNew(){ // 構造式
        struct Light *t;
        t = (Light *)malloc(sizeof(Light));
        t->turnOn = turnOn;
        t->turnOff = turnOff;
        return (void*) t;
    }

  • 创建对象,调用函数:

void main() {
    Light *led = LightNew();
    led->turnOn( led );
    led->turnOff( led );
}


原文地址:https://blog.csdn.net/soarfeng/article/details/145148293

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!