物件導向 三大特性(封裝 繼承 多型)

2022-03-06 18:12:55 字數 2535 閱讀 3684

一、封裝

目的保護類,讓類更加安全。

做法:讓類裡面的成員變數變為私有(即訪問修飾符)的,做相應的方法或者屬性去間接的操作成員變數

※訪問修飾符

private 私有的只能在該類中訪問

protected 受保護的只能在該類和它的子類中訪問

public 公有的在任何地方都可以訪問

封裝成員方法來間接操作類裡面的成員變數

例:

view code

view code

△使用成員屬性來間接訪問類裡面的成員變數

定義變數的時候最好用_下劃線開頭

選中要做的成員變數右鍵→重構→封裝字段(ctrl+r,e)

自動生成的**不是成員變數也不是成員方法  是成員屬性

造好之後可以通過成員屬性操作成員變數

例:

view code

view code

構造方法(函式):

作用:造物件所要呼叫的方法,用來建立物件

每乙個類都有乙個構造方法,不寫也有只不過看不到而已

特殊性:寫法特殊 (方法名=類名;沒有返回值)

執行時間特殊(建立物件時執行)

用途:可以對成員進行初始化

舉個例子:

view code

view code

舉個栗子:使用物件導向來求兩個圓之間的面積

view code

函式過載

函式過載需要的條件:函式名要相同,引數的個數或者引數的型別不同

this關鍵字:

雖然寫在類裡面,但不是屬於類的,而是屬於該物件的

一般來說在類裡面 this關鍵字是可以省略的,但是如果有乙個方法形參名字和成員名字重複,這時候再呼叫該物件裡面的成員的時候需要加this關鍵字

is關鍵字:判斷變數是不是屬於某個型別

例:if (y2 is ren)   

s = "是乙個人";   

else   

s = "不是乙個人";   

as關鍵字:轉換型別(只能轉換相容型別,可以將子類物件轉換為父類物件)

二、繼承

子類可以繼承父類的一切

特點:單繼承   乙個子類只能有乙個父類  乙個父類可以有多個子類

c#特殊點:所有類的祖先都是object

base關鍵字:在子類中代表父類物件,用法和this關鍵字相同         

如果父類有構造方法,那麼子類也要有構造方法,如果父類構造需要引數,那麼子類構造也必須有相應的引數。         

子類構造後面可以通過base呼叫父類的構造方法         

public china(string m):base(m) {}

view code

sealed關鍵字

密封類 該類不可以被繼承

sealed class 類名

部分類:partial

可以將乙個類拆分成多個部分,分別放在多個檔案內

呼叫需要namespace相同,或用use引用

namespace 命名空間 相當於虛擬資料夾

partial class 類名   //拆分的類均加partial

三、多型

1.編譯多型

函式過載

2.執行多型

概念:當父類引用指向子類例項的時候,由於子類對父類的方法進行了重寫,在呼叫該方法的時候表現出的不同就稱為多型

條件:必須要有繼承  父類引用指向子類例項  子類必須對父類的方法進重寫

黎克特制代換原則:如果有乙個地方需要使用到父類物件,那麼你可以將乙個子類物件給他

view code

物件導向三大特性 封裝 繼承 多型

封裝 封裝 是將類的某些資訊隱藏在類的內部,不允許外部程式直接訪問,而是通過該類提供的方法來實現對隱藏資訊的操作和訪問。存在乙個邊界,邊界之內的細節隱藏起來,只留下對外的藉口 如 筆記本,手機,飲水機 封裝的好處 只能通過規定方法訪問資料,安全 易用 簡單 易維護。隱藏類的實現細節 方便加入控制語句...

物件導向三大特性 繼承 封裝 多型

繼承 即子類可以繼承父類的除了所有屬性 方法外的所有內容。子類繼承父類,只需要在類名後面加上 父類名 即可。如下 定義乙個父類,animals class animals pass 再定義乙個子類cat,繼承父類animals class cat animals pass 這樣cat類即可繼承父類的...

物件導向三大特性 封裝,繼承,多型

把乙個物件的屬性私有化,同時提供一些可以被外界訪問的屬性的方法。即並不是所有屬性都需要提供。子類繼承父類,子類擁有父類的所有屬性和方法,但是不能訪問父類的私有屬性和方法,只能擁有 子類可以擁有自己的屬性和方法 子類可以用自己方式實現父類方法,即重寫。程式中定義的引用變數所指向的具體型別 和 該引用變...