C#物件導向三大特性總結

提高班14期郭倩_Ulrica發表於2018-06-10

前言

看完視訊並沒有及時總結,等到快要驗專案了,才來又總結一遍。不過學習什麼時候都不晚!其實看完設計模式以後對封裝,繼承,多型有了更深的理解。

三大特性

分別有封裝,繼承,多型

封裝

字面意思也很好理解。我們大家都喜歡網購,產品為了不受破壞或者不外洩,都會進行產品封裝,如果放到程式碼裡,這就叫封裝了。
比如我們大家都玩微信,微信上面只有一些按鈕來滿足我們的需求,我們點選傳送,訊息就可以傳遞到對方的資訊框,但是我們並不知道這個過程是怎樣執行的。這就是因為過程被封裝。

簡單來說,就是將功能分開: 後臺工作+顯示工作


繼承

舉個栗子:

拿雙胞胎舉例,他們都繼承了父母的基因,所以雙胞胎之間的共性是有很多的,比如樣貌,身高等,可能都會有相似之處。這就是繼承

程式碼展示繼承:
老師繼承了人類—–
繼承

注意:類與介面叫實現,不叫繼承。

里氏轉換is/as

轉換:
舉個栗子

有一天兒子長大了,想做一些父親能做的事。這個時候就需要有父親的許可權。
但是父類不能直接轉換成子類,需要方法。
1. new的是父類,轉的是子類,不行
2. 如果new的時候new的是子類,那麼再轉換這個子類是可以的
3. new的是大哥,轉的是大哥,可以
4. 如果new的是一個子類,轉換的是另一個子類,是不可以的
5. new的是大哥,轉的是小弟,不行。
總結:new什麼,轉什麼
子類轉換成父類的時候,直接隱式轉換就可以

轉換過程中,會報異常,但是程式碼沒錯,這時需要一個判斷

is:—–

bool型別,只做判斷。

is
as:—-

返回的是型別,不是bool,先判斷再轉換

is與as的區別:

  1. is可以做as的事情(is更保險一點)
  2. as轉換的時候不報異常,調方法的時候報異常,返回來的是null(空)
  3. is轉換返回的是bool值。true就是能轉換,false就是不能轉換
  4. as先進行判斷再進行轉換

多型

雙胞胎不僅繼承了父母的基因,他們還有自己的特點,比如說品行或者脾氣,都會有自己的性格特點,這也是我們能區分出來的標誌。這種不同,就是多型。

多型:就是物件可以表現多個型別的能力。

典型的多型:
多型

子類重寫父類的方法:

(1)子類的方法名可以和父類的方法名重名,但是會出現一條綠線,也就是出現瑕疵。
解決方法:
1. 在子類方法的修飾符後面+new
2. 在父類的方法修飾符後+虛方法(virtual),並在子類方法修飾符後+override(重寫)

(2)子類可以有與父類方法名相同的方法。
1. 簽名不同(即過載)
2. 簽名相同(隱藏父類方法)—-即命名

建立多型的方式

  1. 父類實現
  2. 抽象類實現
  3. 介面實現

擴充:

抽象方法與抽象類:

  • 抽象方法
    ①使用abstract修飾
    ②沒有方法體
    ③必須在抽象類中
  • 抽象類:
    ①無法例項化(給子類寫的程式碼,自己用不了)
    ②父類是抽象類,子類繼承了這個類,必須把抽象類中的抽象方法重寫
    ③抽象成員只能在抽象類中

二 虛方法與抽象方法:
這裡寫圖片描述

三 override與overload的區別:

  1. overrload)過載是方法的名稱相同,引數或引數型別不同。進行多次過載以適應不同的需要。過載是程式導向的概念

  2. override)重寫是進行基類中函式的重寫。override是物件導向的概念

錯誤的過載:————————-個數相同,型別也相同
錯誤

正確的過載:———————–有一個不同(方法名相同,型別 不同)
正確

後記

寫完部落格,感覺自己又溫習了一遍.還是加深了一遍印象.比看完就總結效果更好一些.其實最好的是看完就總結一遍,事後再總結一遍.這樣還能達到溫故知新的效果.

相關文章