深入Android架构(从线程到AIDL)_30 JNI架构原理_Java与C的对接03
目录
2.4 以C结构表达类(class),并创建对象(object)
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)!