C語言是怎樣實現封裝 繼承 多型的?

2021-07-22 12:13:55 字數 1023 閱讀 1675

我們都知道封裝、繼承、多型是c++物件導向中的基本特徵。c語言是面向過程的語言,自身沒有這些特性,那如何使用c語言來模擬c++的封裝、繼承、多型等物件導向的基本特徵。下面就要討論一下封裝、繼承、多型等物件導向在c語言中是如何實現的。

一、封裝

封裝:c++中的封裝是利用public,protected、private來進行實現的,來隱藏一些不想讓別人能夠看到的一些東西,只留一些介面給使用者進行使用,c語言中有結構體(struct),可以實現封裝和隱藏。

為了隱藏乙個類的具體實現,一般是乙個公開的標頭檔案,乙個私有標頭檔案,私有標頭檔案中定義實現的細節,公開標頭檔案中定義開放給客戶和其他程式設計師的介面和公共資料。封裝性的意義在於,函式和資料是綁在一起的,資料和資料是綁在一起的。這樣就可以通過簡單的乙個結構指標訪問到所有的資料,遍歷所有的函式。

struct _data;

typedef void (*process)(struct _data* pdata); //結構體指標

typedef struct _data //資料和資料進行繫結

data;

二、繼承

c++的繼承主要是可以在基類的基礎上能夠增添新有的功能,子類可以擁有父類的所有行為,同時也能夠將原有的行為進行更改,在設計c語言繼承性的時候,我們需要做的就是把基礎資料放在繼承的結構的首位置即可。這樣資料的訪問就不會存在問題。

typedef struct _parent           //基礎資料

parent;

typedef struct _child

child;

三、多型

多型,就是說用同一的介面**處理不同的資料。比如說,乙個通用的結構也不清楚是什麼資料,什麼型別的處理函式?我們在處理時只需要呼叫函式就可以了,剩下的事情我們不需要管,因為不同的介面會有不同的函式去處理。

typedef struct _play

play;

C語言實現封裝 繼承 多型

c語言中雖然沒有類,但有struct和指標。我們可以在乙個struct中存入資料和函式指標,以此來模擬類行為。typedef struct parent parent typedef struct child child include include 模擬乙個類a typedef struct a...

C實現類封裝 繼承 多型

1 概述 c語言是一種面向過程的程式語言,而c 是在c語言基礎上衍生來了的物件導向的語言,實際上,很多c 實現的底層是用c語言實現的,如在visual c 中的inte ce其實就是struct,查詢inte ce的定義,你可以發現有這樣的巨集定義 ifndef inte ce define int...

c 封裝,繼承,多型

一 封裝 封裝是實現物件導向程式設計的第一步,封裝就是將資料或函式等集合在乙個個的單元中 我們稱之為類 被封裝的物件通常被稱為抽象資料型別。物件導向程式設計中一般以類作為資料封裝的基本單位。類將資料和運算元據的方法結合成乙個單位。在設計類時,不希望直接訪問類中的資料,而是希望通過方法來訪問資料。如此...