前面我们用了C语言结构体与函数指针模拟C++类的思想。
今天我们用C语言实现Javabean功能
#include<stdio.h>
typedef struct student Student;
struct student{
int id;
char * name;
void (*setId)(Student * ,int);
int (*getId)(Student *);
void (*setName)(Student *,char *);
char *(*getName)(Student *);
};
void setId(Student * this,int id)
{
this->id=id;
}
int getId(Student * this)
{
return this->id;
}
void setName(Student * this,char * name)
{
this->name=name;
}
char *getName(Student * this)
{
return this->name;
}
int main(){
Student std;
std.setId=setId;
std.getId=getId;
std.setName=setName;
std.getName=getName;
std.setId(&std,1);
std.setName(&std,"jiang");
printf("id:%d\nname:%s\n",std.getId(&std),std.getName(&std));
return 0;
}
运行结果:
可以看到我们在结构体内增加了setId与getId的方法,参数是本结构体类型的this指针。
由此我们可以想象java语言并非是没有指针而是省略了这一部分。