我可以在纯C中使用getter和setter而不是使用外部变量吗?
最佳答案
首先,不要听任何人说“X语言中没有面向对象”,因为他们还没有真正理解OO是一种程序设计方法,完全脱离了语言语法。
有些语言有优雅的方式来实现oo,有些则没有。然而,可以用任何语言编写面向对象的程序,for example in C。类似地,你的程序不会仅仅因为你用java编写了一个合适的oo设计,或者因为你使用了某些语言关键字而自动获得一个合适的oo设计。
在c中实现私有封装的方式比在支持oo的语言中实现私有封装的方式粗糙一些,但它确实是这样的:
//module.h
void set_x (int n);
int get_x (void);
//module.c
static int x; // private variable
void set_x (int n)
{
x = n;
}
int get_x (void)
{
return x;
}
//main.c
#include "module.h"
int main (void)
{
set_x(5);
printf("%d", get_x());
}
可以称之为“类”或“adt”或“代码模块”,因为你喜欢。
每一个合理的C程序都是这样写的。并且已经写了过去的30-40年左右,只要程序设计已经存在。如果你说C程序中没有setter/getter,那是因为你没有使用C的经验。