對物件導向三大特徵的理解

2021-09-25 09:37:42 字數 2090 閱讀 5072

以word繪製和組合圖形為例:繪製乙個矩形,再繪製乙個圓

可以組合它們成為乙個整體

一、封裝

所有的事物我們都可以用抽象的類來表示,每乙個類又有它的成員:屬性和方法,這些成員對其他哪些類可見,對哪些類需要隱藏也屬於封裝的一部分,如上所述我們可以把乙個矩形看成乙個類它有長和寬等屬性,圓又是乙個類,組合後的圖形又是乙個新的類,也可以把所有都歸為乙個類-圖形類…

//矩形類

class rect

,),長為寬為的矩形", x, y, width, heigth);}}

//圓類

class circle

,),半徑為的圓", x, y, r);}}

二、繼承

子類繼承父類的所有成員,在此基礎上子類可以進一步擴充套件,新增屬於自己的新成員, 繼承的部分無需額外編碼,特殊地,介面繼承僅使用屬性和方法的名稱,子類必須提供實現功能的**。

在不使用多型的情況下實現多種圖形多個的組合

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace zhy_0718

}//矩形類

class rect : shape

new public void drawing()

,),長為寬為的矩形", x, y, width, heigth);}}

//圓類

class circle : shape

new public void drawing()

,),半徑為的圓", x, y, r);}}

//三角形類

class ******** : shape

new public void drawing()

,)、(,)和(,)構成的三角形", x1, y1, x2, y2, x3, y3);}}

//...所有圖形的類

//組合類

class com

public void drawing()

}console.writeline("繪製組合圖形結束");}}

class program}}

就這樣的話,存在乙個問題,我的圖形有多少種我的case就得有多少個,原因在於我們不能判斷父類引用變數指向的子類型別,必須標識再強轉,這樣**就要寫很多了

三、多型

多型最大的好處就是:允許將子類型別的指標賦值給父類型別的指標。

實現多型,有二種方式:

覆蓋,是指子類重新定義父類的虛函式的做法。

過載,是指允許存在多個同名函式,而這些函式的參數列不同

使用多型就簡便多了,它能自己識別父類引用變數指向的子類型別不管是什麼什麼圖形,一行**就解決,及時新增乙個新的圖形,也無需再修改此方法

using system;

using system.collections.generic;

using system.linq;

using system.text;

//矩形類

class rect:shape

,),長為寬為的矩形", x, y, width, heigth);}}

//圓類

class circle:shape

,),半徑為的圓", x, y, r);}}

//三角形類

class ********:shape

,)、(,)和(,)構成的三角形", x1, y1, x2, y2, x3, y3);}}

//...新增任意圖形的類

//組合類

class com

public void drawing()

}class program}}

對物件導向的理解

修飾符一般只修飾屬性和方法,屬性盡量使用private,方法盡量使用public public公開的,只要在同一工程內就可以訪問 protected受保護的,只能在當前包或子類中才能訪問 預設,沒有修飾符即預設,只能在當前包中才能訪問 private,私有的,只能在當前類中使用 static 修飾變...

對物件導向的理解

物件導向包括三個特徵 繼承 封裝 多型。類的繼承性是指從已有的乙個類來extends子類,子類具有了父類的所有特徵,同時,子類也可以有新的特性。比如 人是乙個類,男人具有了人類的所有的特性,比如思考,比如勞動。同時,男人也有新的特性,比如男人會長鬍子。類的封裝是指類把所有的操作都封閉起來,僅僅提供介...

對物件導向的理解

封裝 就是將一類事物的屬性和行為抽象成乙個類,使其屬性私有化,行為公開化,提高了資料的隱秘性的同時,使 模組化。這樣做使得 的復用性更高。繼承 則是進一步將一類事物共有的屬性和行為抽象成乙個父類,而每乙個子類是乙個特殊的父類 有父類的行為和屬性,也有自己特有的行為和屬性。這樣做擴充套件了已存在的 塊...