類的繼承與多態(tài)PPT學(xué)習(xí)教案_第1頁
類的繼承與多態(tài)PPT學(xué)習(xí)教案_第2頁
類的繼承與多態(tài)PPT學(xué)習(xí)教案_第3頁
類的繼承與多態(tài)PPT學(xué)習(xí)教案_第4頁
類的繼承與多態(tài)PPT學(xué)習(xí)教案_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、會計(jì)學(xué)1 類的繼承與多態(tài)類的繼承與多態(tài) 2 n通過一個(gè)案例,演示繼承機(jī)制 第1頁/共46頁 3 父類父類 子類子類 動物動物 大象大象貓貓 和調(diào)試的高質(zhì)量 軟件,使系統(tǒng)能 高效地實(shí)現(xiàn)。 第2頁/共46頁 4 第3頁/共46頁 5 第4頁/共46頁 6 Point CircleRectangle Cylinder 第5頁/共46頁 7 點(diǎn)點(diǎn)(Point)類具有以下屬性:類具有以下屬性: 坐標(biāo)坐標(biāo)X 坐標(biāo)坐標(biāo)Y 且具有以下方法:且具有以下方法: ToString( ):點(diǎn)的字符串表示形點(diǎn)的字符串表示形 式式 示例代碼位于示例代碼位于“CSharp示例示例第第6課課 PointCirlceCylin

2、der” 第6頁/共46頁 8 示例代碼位于示例代碼位于“CSharp示例示例第第6課課 PointCirlceCylinder” 第7頁/共46頁 9 圓圓(Ciecle)類具有以下屬性:類具有以下屬性: 坐標(biāo)坐標(biāo)X 坐標(biāo)坐標(biāo)Y 半徑半徑Radius 且具有以下方法:且具有以下方法: Diameter():求直徑求直徑 CircumFerence():求周長求周長 Area():求圓的面積求圓的面積 ToString():圓的字符串表示形式圓的字符串表示形式 第8頁/共46頁 10 第9頁/共46頁 11 第10頁/共46頁 12 示例代碼位于示例代碼位于“CSharp示例示例第第6課課 P

3、ointCirlceCylinder” 第11頁/共46頁 13 第12頁/共46頁 14 public class Circle : Point private double radius; public Circle() public Circle() public double Radius public double Diameter() public double CircumFerence() public double Area() public override string ToString() 第13頁/共46頁 15 為了讓為了讓Circle類能直接訪問類能直接訪問Poi

4、nt類的成員變量類的成員變量x和和y,我們可以在,我們可以在Point類中將這些變量聲明為類中將這些變量聲明為protected。 基類的保護(hù)成員可以從基類或其派生類中訪問?;惖谋Wo(hù)成員可以從基類或其派生類中訪問。 下述示例的下述示例的Point類就是這樣改造的類,除了類就是這樣改造的類,除了x和和y的訪問屬性說明為的訪問屬性說明為protected以外,其它與以外,其它與Point類相同。類相同。 第14頁/共46頁 16 public class Point protected int x; protected int y; public Point() public Point(int

5、 x, int y) / 屬性:坐標(biāo)屬性:坐標(biāo)X public int X / 屬性:坐標(biāo)屬性:坐標(biāo)Y public int Y / 返回點(diǎn)類的字符表示形式返回點(diǎn)類的字符表示形式 public override string ToString() 第15頁/共46頁 17 示例代碼位于示例代碼位于“CSharp示例示例第第6課課 PointCirlceCylinder” 使用單步調(diào)試跟蹤程序的運(yùn)行過程,使用單步調(diào)試跟蹤程序的運(yùn)行過程, 看一看,實(shí)例化看一看,實(shí)例化Circle類的對象時(shí),類的對象時(shí), 給給Circle類的類的X和和Y屬性賦值時(shí),會執(zhí)屬性賦值時(shí),會執(zhí) 行哪些代碼?行哪些代碼? 第

6、16頁/共46頁 18 第17頁/共46頁 19 第18頁/共46頁 20 public class Circle : Point private double radius; public double Radius public Circle() this.radius=0; public Circle(int x, int y, double r) : base(x, y) this.radius = r; public double Radius public double Diameter() public double CircumFerence() public double A

7、rea() public override string ToString() return 圓心坐標(biāo)圓心坐標(biāo)+base.ToString() +; 半徑半徑+radius; 第19頁/共46頁 21 示例代碼位于示例代碼位于“CSharp示例示例第第6課課 PointCirlceCylinder” 使用單步調(diào)試跟蹤程序的運(yùn)行過程,使用單步調(diào)試跟蹤程序的運(yùn)行過程, 看一看,實(shí)例化看一看,實(shí)例化Circle類的對象時(shí),類的對象時(shí), 給給Circle類的類的X和和Y屬性賦值時(shí),會執(zhí)屬性賦值時(shí),會執(zhí) 行哪些代碼?行哪些代碼? 第20頁/共46頁 22 Point Circle Cylinder 除繼

8、承了除繼承了Circle類的屬性和類的屬性和 方法外,還應(yīng)具有:方法外,還應(yīng)具有: Height:圓柱體高度圓柱體高度 Volumn(): 求體積方法求體積方法 并重載:并重載: Area():求圓柱體表面積:求圓柱體表面積 第21頁/共46頁 23 示例代碼位于示例代碼位于“CSharp示例示例第第6課課 PointCirlceCylinder” 第22頁/共46頁 24 示例代碼位于示例代碼位于“CSharp示例示例第第6課課 PointCirlceCylinder” 第23頁/共46頁 25 示例代碼位于示例代碼位于“CSharp示例示例第第6課課 PointCirlceCylinder

9、” 第24頁/共46頁 26 第25頁/共46頁 27 示例代碼位于示例代碼位于“CSharp示例示例第第6課課 PointCirlceCylinder” 為什么為什么ToString方法能正常顯示,而方法能正常顯示,而 Area方法不能正確計(jì)算?方法不能正確計(jì)算? 第26頁/共46頁 28 public class Circle : Point public virtual double Area() return Math.PI * Math.Pow(this.radius,2); public class Cylinder : Circle public override double

10、Area() return 2*base.Area()+base.CircumFerence()*Height; 第27頁/共46頁 29 第28頁/共46頁 30 第29頁/共46頁 31 第30頁/共46頁 32 示例代碼位于示例代碼位于“CSharp示例示例第第6課課VirtualMethod” 第31頁/共46頁 33 public class Circle : Point public override double Area() return Math.PI * Math.Pow(this.radius,2); public class Cylinder : Circle publ

11、ic override double Area() return 2*base.Area()+base.CircumFerence()*Height; public override double Volume() return base.Area() * this.Height; 第32頁/共46頁 34 public class Point public virtual string Name get return 點(diǎn)點(diǎn); public class Circle : Point public override string Name get return 圓圓; public class

12、Cylinder : Circle public override string Name get return 圓柱體圓柱體; 示例代碼位于示例代碼位于“CSharp示例示例第第6課課VirtualMethod” 第33頁/共46頁 35 示例代碼位于示例代碼位于“CSharp示例示例第第6課課VirtualMethod” 第34頁/共46頁 36 第35頁/共46頁 37 public abstract class Shape public virtual double Area() return 0.0; public virtual double Volume() return 0.0

13、; public abstract string Name get; 示例代碼位于示例代碼位于“CSharp示例示例第第6課課Abstract” 第36頁/共46頁 38 第37頁/共46頁 39 +Area() : double +Volume() : double +Name() : string S Sh ha ap pe e +Area() : double +Volume() : double +Name() : string +ToString() : string -x : int -y : int P Po oi in nt t +Area() : double +Name()

14、 : string +Radius() : double +ToString() : string -radius : double C Ci ir rc cl le e +Area() : double +Volume() : double +Name() : string +Height() : double +ToString() : string -height : double C Cy yl li in nd de er r +Area() : double +Name() : string +Length() : double +Width() : double +ToStrin

15、g() : string -length : double -width : double R Re ec ct ta an ng gl le e +Area() : double +Volume() : double +Name() : string +Height() : double +ToString() : string -height : double C Cu ub be e 第38頁/共46頁 40 示例代碼位于示例代碼位于“CSharp示例示例第第6課課AbstractSample” 第39頁/共46頁 41 第40頁/共46頁 42 public interface IShape double Area(); double Volume(); string Name get; 第41頁/共46頁 43 public class Point

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論