C#物件導向三大特性總結
前言
看完視訊並沒有及時總結,等到快要驗專案了,才來又總結一遍。不過學習什麼時候都不晚!其實看完設計模式以後對封裝,繼承,多型有了更深的理解。
三大特性
分別有封裝,繼承,多型
封裝
字面意思也很好理解。我們大家都喜歡網購,產品為了不受破壞或者不外洩,都會進行產品封裝,如果放到程式碼裡,這就叫封裝了。
比如我們大家都玩微信,微信上面只有一些按鈕來滿足我們的需求,我們點選傳送,訊息就可以傳遞到對方的資訊框,但是我們並不知道這個過程是怎樣執行的。這就是因為過程被封裝。
簡單來說,就是將功能分開: 後臺工作+顯示工作
繼承
舉個栗子:
拿雙胞胎舉例,他們都繼承了父母的基因,所以雙胞胎之間的共性是有很多的,比如樣貌,身高等,可能都會有相似之處。這就是繼承
程式碼展示繼承:
老師繼承了人類—–
注意:類與介面叫實現,不叫繼承。
里氏轉換is/as
轉換:
舉個栗子
有一天兒子長大了,想做一些父親能做的事。這個時候就需要有父親的許可權。
但是父類不能直接轉換成子類,需要方法。
1. new的是父類,轉的是子類,不行
2. 如果new的時候new的是子類,那麼再轉換這個子類是可以的
3. new的是大哥,轉的是大哥,可以
4. 如果new的是一個子類,轉換的是另一個子類,是不可以的
5. new的是大哥,轉的是小弟,不行。
總結:new什麼,轉什麼
子類轉換成父類的時候,直接隱式轉換就可以
轉換過程中,會報異常,但是程式碼沒錯,這時需要一個判斷
is:—–
bool型別,只做判斷。
as:—-
返回的是型別,不是bool,先判斷再轉換
is與as的區別:
- is可以做as的事情(is更保險一點)
- as轉換的時候不報異常,調方法的時候報異常,返回來的是null(空)
- is轉換返回的是bool值。true就是能轉換,false就是不能轉換
- as先進行判斷再進行轉換
多型
雙胞胎不僅繼承了父母的基因,他們還有自己的特點,比如說品行或者脾氣,都會有自己的性格特點,這也是我們能區分出來的標誌。這種不同,就是多型。
多型:就是物件可以表現多個型別的能力。
典型的多型:
子類重寫父類的方法:
(1)子類的方法名可以和父類的方法名重名,但是會出現一條綠線,也就是出現瑕疵。
解決方法:
1. 在子類方法的修飾符後面+new
2. 在父類的方法修飾符後+虛方法(virtual),並在子類方法修飾符後+override(重寫)
(2)子類可以有與父類方法名相同的方法。
1. 簽名不同(即過載)
2. 簽名相同(隱藏父類方法)—-即命名
建立多型的方式
- 父類實現
- 抽象類實現
- 介面實現
擴充:
一抽象方法與抽象類:
- 抽象方法
①使用abstract修飾
②沒有方法體
③必須在抽象類中 - 抽象類:
①無法例項化(給子類寫的程式碼,自己用不了)
②父類是抽象類,子類繼承了這個類,必須把抽象類中的抽象方法重寫
③抽象成員只能在抽象類中
二 虛方法與抽象方法:
三 override與overload的區別:
overrload)過載是方法的名稱相同,引數或引數型別不同。進行多次過載以適應不同的需要。過載是程式導向的概念
override)重寫是進行基類中函式的重寫。override是物件導向的概念
錯誤的過載:————————-個數相同,型別也相同
正確的過載:———————–有一個不同(方法名相同,型別 不同)
後記
寫完部落格,感覺自己又溫習了一遍.還是加深了一遍印象.比看完就總結效果更好一些.其實最好的是看完就總結一遍,事後再總結一遍.這樣還能達到溫故知新的效果.
相關文章
- 【C#之物件導向總結】C#物件
- [物件導向總結]物件
- js 物件導向總結JS物件
- 物件導向概念總結物件
- 週報 物件導向總結物件
- golang 物件導向特性Golang物件
- JAVA物件導向詳細總結Java物件
- Java物件導向總結(多型)Java物件多型
- swift物件導向特性——類和結構體Swift物件結構體
- 物件導向有哪些特性物件
- 自己總結物件導向程式設計的總結物件程式設計
- 物件導向(理解物件)——JavaScript基礎總結(一)物件JavaScript
- javaSE之物件導向思維導圖總結Java物件
- 物件導向第二單元總結物件
- Java物件導向三大特性Java物件
- 08 ### 物件導向三大特性物件
- 物件導向知識點總結歸納物件
- JS物件導向:JS繼承方法總結JS物件繼承
- 物件導向中Object常用屬性總結物件Object
- java物件導向複習總結(異常)Java物件
- 物件導向 -- 三大特性之多型物件多型
- Python物件導向三大特性Python物件
- C++物件導向三大特性C++物件
- 第三週:java物件導向部分總結(2)Java物件
- php物件導向的簡單總結 $this $parent selfPHP物件
- 物件導向-物件導向思想物件
- 【C#進階】高階物件導向特性_2024-06-22C#物件
- 2.1.1 Python物件導向三大特性Python物件
- 物件導向 -- 三大特性之繼承物件繼承
- 物件導向 -- 三大特性之封裝物件封裝
- java基礎 - 物件導向三大特性Java物件
- 第十八章 物件導向的特性物件
- [.net 物件導向程式設計基礎] (13) 物件導向三大特性——多型物件程式設計多型
- [.net 物件導向程式設計基礎] (12) 物件導向三大特性——繼承物件程式設計繼承
- [.net 物件導向程式設計基礎] (11) 物件導向三大特性——封裝物件程式設計封裝
- php物件導向個人濃縮總結和例項PHP物件
- 關於JS的物件導向的思考和總結JS物件
- 物件導向程式設計第二單元總結物件程式設計