基于C#的抽象類別詳解
抽象類,有3個(gè)特點(diǎn):
第1個(gè),不能被實(shí)例化。
第2個(gè),類中的抽象方法在繼承的子類中必須重寫。
第3個(gè),類一旦有抽象方法出現(xiàn),那這個(gè)類必須定義為抽象類。
現(xiàn)實(shí)開發(fā)中,發(fā)現(xiàn)有共同的代碼,可以把這些共同的代碼放在一個(gè)抽象類中。舉個(gè)例子,計(jì)算四邊形的周長。
矩形,長方形,正方形:
class Rectangle { private double _A; public double A { get { return _A; } set { _A = value; } } private double _B; public double B { get { return _B; } set { _B = value; } } public Rectangle() { } public Rectangle(double a, double b) { this._A = a; this._B = b; } public double Perimeter() { return 2 * (_A + _B); } }
長斜方形,長菱形:
class Rhomboid { private double _A; public double A { get { return _A; } set { _A = value; } } private double _B; public double B { get { return _B; } set { _B = value; } } public Rhomboid() { } public Rhomboid(double a,double b) { this._A = a; this._B = b; } public double Perimeter() { return 2 * (_A + _B); } }
梯形,不等邊四邊形:
class Trapezoid { private double _A; public double A { get { return _A; } set { _A = value; } } private double _B; public double B { get { return _B; } set { _B = value; } } private double _C; public double C { get { return _C; } set { _C = value; } } private double _D; public double D { get { return _D; } set { _D = value; } } public Trapezoid() { } public Trapezoid(double a,double b,double c,double d) { this._A = a; this._B = b; this._C = c; this._D = d; } public double Perimeter() { return _A + _B + _C + _D; } }
從上面三個(gè)類別中,你均可以看到有一個(gè)方法,Perimeter()是計(jì)算四邊形的周長。
經(jīng)根博文開頭所言,你可以把這個(gè)方法抽出來,放在一個(gè)抽象類中,統(tǒng)一接口:
public abstract class Quadrilateral { //周長 public abstract double Perimeter(); }
把方法寫成抽象方法之后,每個(gè)類需要繼承此抽象類,并需要重寫 override抽象的方法。
下面驗(yàn)證一下代碼,如需要計(jì)算一個(gè)不規(guī)則的四邊形的周長,那就是4條邊相加:
在控制臺(tái)運(yùn)行:
以上這篇基于C#的抽象類別詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持我們。
欄 目:C#教程
下一篇:C# 微信支付 wx.chooseWXPay 簽名錯(cuò)誤的解決方法
本文標(biāo)題:基于C#的抽象類別詳解
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/5311.html
您可能感興趣的文章
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并打開的方法
- 01-10關(guān)于ASP網(wǎng)頁無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#停止線程的方法
- 01-10WinForm實(shí)現(xiàn)仿視頻播放器左下角滾動(dòng)新聞效果的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#實(shí)現(xiàn)讀取注冊(cè)表監(jiān)控當(dāng)前操作系統(tǒng)已安裝軟件變化的方法
- 01-10C#實(shí)現(xiàn)多線程下載文件的方法


閱讀排行
本欄相關(guān)
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
- 01-10WinForm實(shí)現(xiàn)仿視頻播放器左下角滾動(dòng)新
- 01-10C#停止線程的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的
- 01-10C#實(shí)現(xiàn)讀取注冊(cè)表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機(jī)閱讀
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10delphi制作wav文件的方法
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 04-02jquery與jsp,用jquery