物件導向 OOP 和類

2021-10-06 10:36:35 字數 1242 閱讀 6128

1.物件導向

as is we all known c是面向過程的

然而它的進化版c++是物件導向的

物件導向是怎麼搞的呢

事實上,物件導向其實很簡單

它比較現實

比如乙個人是由很多零件來組成的

對於面向過程的語言來說

關注的它的胳膊,它的腿,要完成乙個動作,就要讓胳膊幹啥,腿幹啥

然而對於物件導向來說,它習慣於直接面向這個人,所關注的這個人的啥,而至於底層怎麼實現,並不關注

2.然後我們說類(class)

類其實和c語言中的結構體有點類似,但有不一樣

類可以定義函式(事實上在c++中結構體struct 仍然可以定義函式)

所以在c++中要說類與結構體的不同那麼說實在的

就只有乙個地方

類定義的成員預設的訪問許可權是private(私有)

而結構體所定義的成員預設是public(公開)

其他的事實上沒有什麼不一樣

接下來我們具體的討論一下類的概念

首先類的定義方式

class

private是私有的意思

public是公開的意思

protected是保護的意思

私有和保護所定義的成員只有類內才能訪問

共有的所定義的東西是公開的,支援在類外進行訪問

事實上,這種看起來很複雜的體制完美的體現了c++相較於c語言的安全性

它的內部成員不允許外部隨意的修改

而只是給外部開了乙個介面

比如說乙個家庭的銀行開是私有的家庭的隱私仍然是私有的

因此你不可以去訪問他們

而大門是開的

這就意味著你可以通過這扇大門去訪問人家想讓你看到的東西

事實上,這一設計比c語言更符合顯示體驗

事實上上述說的這些東西體現了c++的第乙個特點就是封裝的思想

事實上它就是把你的資料(成員變數)和資料的操作(函式)再進行了一次包裝

從而達到隱藏資料操作複雜過程的目的

3.類的作用域:

前面所學的namespace是乙個域,它所定義的變數和函式只能在它的內部發揮作用

這裡類的作用作用域事實上和這個思想稍有類似

事實上定義乙個類就相當於建立了乙個家庭

你要對它的成員進行操作就必須把成員從裡邊拿出來

因此相對類的成員進行操作就必須先通過::運算子把它拿出來

比如class date

你要在類外對printf()進行操作就必須

void a::printf()

OOP(物件導向)抽象類和介面

1.抽象類 abstract修飾的類就是抽象類 父類通常是抽象的,不能例項化 格式 public abstract class a 特徵 不可以直接例項化 可以有構造方法,可以有屬性 留給子類使用 可以有自定義方法 可以有抽象方法,子類必須重寫抽象父類的抽象方法,除非子類也是抽象類 應用場景 是乙個...

oop物件導向

首先是定義 什麼是物件 物件就是屬性的無序集合,每個屬性存放乙個 原始值or物件or函式 既然是屬性的無序集合,那麼屬性的含義顧名思義,那麼屬性是什麼 屬性就是乙個個的鍵值對.也就是 屬性名 屬性 一分為二,首先是屬性名 什麼可以做屬性名,既然屬性的名字,所以我們一般是用字串來命名的,當然,如果自己...

OOP 物件導向

oop思想 接觸到任意乙個任務,首先想到的是這個人物的構成,是由模型構成的 幾個名詞 oo 物件導向 ooa 物件導向的分析 ood 物件導向的設計 ooi 物件導向的實現 oop 物件導向的程式設計 ooa ood ooi 物件導向的實現過程 類和物件的概念 類 抽象名詞,代表乙個集合,共性的事物...