在C語言中,你可以使用typedef
關(guān)鍵字和struct
來創(chuàng)建一個新的數(shù)據(jù)類型,從而實現(xiàn)數(shù)據(jù)封裝。數(shù)據(jù)封裝是將數(shù)據(jù)(屬性)和行為(方法)包裝在一起的一種技術(shù),它可以隱藏對象的內(nèi)部實現(xiàn)細節(jié),只暴露有限的接口供外部訪問。
下面是一個簡單的例子,展示了如何使用typedef struct
實現(xiàn)數(shù)據(jù)封裝:
#include <stdio.h>
// 定義一個結(jié)構(gòu)體類型
typedef struct {
int age;
float height;
} Person;
// 為結(jié)構(gòu)體類型定義一個訪問函數(shù)(getter)
int get_age(Person *p) {
return p->age;
}
float get_height(Person *p) {
return p->height;
}
// 為結(jié)構(gòu)體類型定義一個修改函數(shù)(setter)
void set_age(Person *p, int new_age) {
p->age = new_age;
}
void set_height(Person *p, float new_height) {
p->height = new_height;
}
int main() {
// 創(chuàng)建一個Person對象
Person person;
// 使用setter函數(shù)設(shè)置對象的屬性
set_age(&person, 25);
set_height(&person, 175.5);
// 使用getter函數(shù)獲取對象的屬性
printf("Age: %d\n", get_age(&person));
printf("Height: %.2f\n", get_height(&person));
return 0;
}
在這個例子中,我們首先定義了一個名為Person
的結(jié)構(gòu)體類型,它包含兩個成員變量:age
和height
。然后,我們?yōu)檫@個結(jié)構(gòu)體類型定義了四個訪問函數(shù)(getter)和修改函數(shù)(setter),分別用于獲取和設(shè)置age
和height
的值。最后,在main
函數(shù)中,我們創(chuàng)建了一個Person
對象,并使用這些函數(shù)來訪問和修改它的屬性。
通過這種方式,我們可以將Person
對象的內(nèi)部實現(xiàn)細節(jié)隱藏起來,只暴露出有限的接口供外部訪問。這就是數(shù)據(jù)封裝的基本思想。