C 基礎篇 物件導向(類與物件)

2022-02-11 02:15:09 字數 3023 閱讀 8598

1.類是什麼?

類就相當於模板,就是把同一類的事物的共同特徵進行的抽象。

類的建立和說明:

類是先根據一些具體的物件

(實體的東西

)來抽象出來的共同的特性,然後用**來表示.

在類中,用資料表示事物的狀態,用函式(方法)實現事物的行為動作。

當建立乙個類時,系統會預設的新增乙個建構函式,如果使用者自己寫乙個建構函式則會覆蓋這個預設的建構函式。當然建構函式也是可以過載的。

建構函式的特點:

建構函式名必須與類名相同。

不能有任何的返回值型別。

訪問修飾符一般都是public.

如果乙個類中有乙個建構函式,並且這個建構函式用的private修飾的,那麼這個類是不能例項化的。因為要例項乙個類時,必須去呼叫這個類的建構函式。因此可以寫在這個類中寫乙個靜態的方法,在方法中來例項這個類。    

方法的重寫:

是與引數的個數和引數的型別有關,與返回值沒有關係。

說到了類和方法,那麼就有必要的說一下變數的作用域了:  

是宣告這個變數與最近的大括號的內部。

區域性變數必須要先賦值後才能夠使用。

而類的成員變數是可以不用賦值,就可以先使用,因為建構函式是會初始化這個變數的。 

如果在乙個方法中宣告了乙個與類的成員變數相同的變數,那麼在使用時,呼叫類的成員變數要用this 與之區分開,如果不用this 那麼方法中的變數要優先於成員變數。this就是表示當前類的物件。

2.物件是什麼?

物件就是指某乙個具體的事務。在程式中它是類的乙個例項。簡單的說就是new出來的。

3.物件導向是什麼?

物件導向是一種分析問題的方式 主要的作用就是增加程式的可擴充套件性。

物件導向的優點:

它能夠構建與現實世界相對應的問題模型,並保持他們的結構、關係和行為模式。

物件導向的三大特性: 封裝、繼承、多型。

封裝:  

就是把事物的狀態和行為封裝在類中,使用類的人不需要知道類內部是怎麼實現的,只要呼叫其中的屬性和方法實現功能就行了。

在程式中封裝具體的實現:

屬性封裝了字段。

將多個方法封裝成乙個物件。

將一堆**封裝到乙個方法中。

將一些功能封裝到了幾個類中。

將一些具有相同功能的**封裝到乙個程式集中(dll 、exe),並且對外提供統一的訪問介面。(例:公司的每個部門的部門經理,與其他部門協作。)

繼承:它是指類與類之間的關係,並且類是不能相互繼承的。如果乙個類沒有顯示繼承自任何乙個類,預設是繼承

object

類(object類是所有類的的父類)。

如果顯示指定了當前類的繼承自某個類,則將覆蓋預設的object類。    

繼承的優點 :

**的重用

多型(黎克特制替換原則lsp)(程式的可擴充套件性、靈活性),下面說明

子類繼承父類的屬性、方法、字段,使建立子類變得很簡單,實瑞了**的重用,和多型。但要記的子類只能繼承父類中非私有的東西。

繼承後關於建構函式的問題:      

1.類的建構函式是不能被繼承的。只能在子類中去呼叫父類的建構函式。

2.子類的建構函式會預設去呼叫父類中的無引數的建構函式,當然也可以自己來設定呼叫父類的哪乙個建構函式。

(1)當在父類中寫了帶參的建構函式,記的要再增加乙個無參的建構函式,(這也說明建構函式是可以過載的。)因為當自己在類中寫了建構函式會覆蓋系統預設的建構函式。

(2)當然也可以在子類的建構函式加上:base(父類建構函式要傳的引數),這樣就是呼叫父類中帶引數的建構函式了。

3.在當前類的建構函式中去也可以去呼叫當前類的另乙個構造方法。用:this(引數),這樣可以少寫建構函式裡的內容了。

注意:在建構函式中如果用this()就不能再用:base(),相反也是一樣的。

當呼叫從父類中繼承過來的成員的時候,如果子類沒有重寫則this.成員與base.成員是沒有區別的。如果子類重寫了父類成員,則this.成員,呼叫的是子類重寫以後的。base.成員,呼叫的依然是父類的成員。      

類的單根繼承性:乙個子類只能繼承乙個父類。

類的傳遞性:子類繼承父類的方法和屬性等,同時還繼承了父類的父類的屬性和方法。

重要的特性: 父類物件可以引用子類例項,它編譯的是父類物件,但執行卻是乙個子類物件。具體特徵:

被宣告為父類物件,擁有父類的屬性等,占用子類的記憶體空間,子類方法覆蓋父類的方法時,此時物件呼叫的是子類的方法;否則自動呼叫繼承父類的方法,也就是說父類不能去呼叫子類中獨有的成員。      

關於父類中私有成員是否被繼承的問題

個人觀點:所有私有成員沒有被繼承。是指沒有辦法去訪問,並不代表記憶體中不存在。

例如:兒子繼承了父親的一千萬,但不能花。 

訪問級別的問題:(兒子能去的地方爹一定要能去)

子類的訪問級別必須比父類的級別要低或相同。

當前類中的成員的訪問級別不能比所對應的型別訪問級別高(包括方法的引數。)

多型:多型就是多種表現的形態, 具體的是指不同物件收到相同訊息時,會產生不同行為,同乙個類在不同的場合下表現出不同的行為特徵。    

實現多型的主要手段: 1.虛方法virtual, 2抽象方法abstract 3介面。

虛方法使用:

虛方法必須有方法體,當然方法體中可以不寫內容

子類繼承父類,其實父類的虛方法可以重寫,也可以不重寫。

虛方法可以寫在普通類中

虛方法與抽象方法的區別:

1.虛方法必須有方法體,抽象方法不能有方法體。

2.抽象方法必須在抽象類中宣告,虛方法可以出現在抽象類中也可以在普通類中宣告。

3.抽象方法必須在子類中重寫,虛方法可以被重寫,也可以不重寫。

多型的作用:

把不同的子類物件當作父類來看,可以遮蔽不同子類物件之間的差異,寫出通用的**,做出通用的程式設計,以適應需求的不斷變化。

多型的含義:

使得能夠利用基類的指標來引用不同子類的物件,以及根據所引用物件的不同,以不同的方式執行相同的操作。

總結的說多型的意義就是為了程式可擴充套件性,並且節省成本和提高效率。

C 物件導向 , 類與物件

一,類的字段 類的字段,就是類裡面的 資料。二,類的方法 1 函式的過載 如何判斷 是由兩個或多個同名函式組成的,但是函式要有不同的引數 或個數。引數 是函式的輸入的東西 shuchu shuchu inta shuchu int aaa string bbb 2,類的字段 俗點說就是類裡面定義的變...

C 物件導向 , 類與物件

一,類的字段 類的字段,就是類裡面的 資料。二,類的方法 1 函式的過載 如何判斷 是由兩個或多個同名函式組成的,但是函式要有不同的引數 或個數。引數 是函式的輸入的東西 shuchu shuchu inta shuchu int aaa string bbb 2,類的字段 俗點說就是類裡面定義的變...

物件導向 類與物件

物件導向是相對於面向過程而言的,具體的來說,比如 我們想要吃一頓午飯,我們親自買菜,洗菜.切菜,炒菜,煮飯,這樣做成一桌菜就叫面向過程,也就是說整個過程 你都親自完成,而 物件導向呢?點外賣 點一桌子菜和公尺飯 不管他咋做出來的 面向過程程式設計 就是 我們想要實現乙個功能 直接去呼叫別人寫好的功能...