以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子類,子類具有了父類的所有特徵,同時,子類也可以有新的特性。比如 人是乙個類,男人具有了人類的所有的特性,比如思考,比如勞動。同時,男人也有新的特性,比如男人會長鬍子。類的封裝是指類把所有的操作都封閉起來,僅僅提供介...
對物件導向的理解
封裝 就是將一類事物的屬性和行為抽象成乙個類,使其屬性私有化,行為公開化,提高了資料的隱秘性的同時,使 模組化。這樣做使得 的復用性更高。繼承 則是進一步將一類事物共有的屬性和行為抽象成乙個父類,而每乙個子類是乙個特殊的父類 有父類的行為和屬性,也有自己特有的行為和屬性。這樣做擴充套件了已存在的 塊...