基于C#的抽象類(lèi)別詳解
抽象類(lèi),有3個(gè)特點(diǎn):
第1個(gè),不能被實(shí)例化。
第2個(gè),類(lèi)中的抽象方法在繼承的子類(lèi)中必須重寫(xiě)。
第3個(gè),類(lèi)一旦有抽象方法出現(xiàn),那這個(gè)類(lèi)必須定義為抽象類(lèi)。
現(xiàn)實(shí)開(kāi)發(fā)中,發(fā)現(xiàn)有共同的代碼,可以把這些共同的代碼放在一個(gè)抽象類(lèi)中。舉個(gè)例子,計(jì)算四邊形的周長(zhǎng)。
矩形,長(zhǎng)方形,正方形:
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); } }
長(zhǎng)斜方形,長(zhǎng)菱形:
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è)類(lèi)別中,你均可以看到有一個(gè)方法,Perimeter()是計(jì)算四邊形的周長(zhǎng)。
經(jīng)根博文開(kāi)頭所言,你可以把這個(gè)方法抽出來(lái),放在一個(gè)抽象類(lèi)中,統(tǒng)一接口:
public abstract class Quadrilateral { //周長(zhǎng) public abstract double Perimeter(); }
把方法寫(xiě)成抽象方法之后,每個(gè)類(lèi)需要繼承此抽象類(lèi),并需要重寫(xiě) override抽象的方法。
下面驗(yàn)證一下代碼,如需要計(jì)算一個(gè)不規(guī)則的四邊形的周長(zhǎng),那就是4條邊相加:
在控制臺(tái)運(yùn)行:
以上這篇基于C#的抽象類(lèi)別詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
采用easyui tree編寫(xiě)簡(jiǎn)單角色權(quán)限代碼的方法
本文主要介紹了如何采用easyui tree編寫(xiě)簡(jiǎn)單角色權(quán)限代碼,文章思路清晰,需要的朋友可以參考下2015-07-07http圖片上傳安全性問(wèn)題 根據(jù)ContentType (MIME) 判斷其實(shí)不準(zhǔn)確、不安全
圖片上傳常用的類(lèi)型判斷方法有這么幾種---截取擴(kuò)展名、獲取文件ContentType (MIME) 、讀取byte來(lái)判斷(這個(gè)什么叫法來(lái)著?)。下面由腳本之家小編跟大家分享圖片上傳安全性問(wèn)題,感興趣的朋友一起看看吧2015-09-09C#中String StringBuilder StringBuffer類(lèi)的用法
這篇文章給大家簡(jiǎn)單介紹下C#中String StringBuilder StringBuffer三個(gè)類(lèi)的用法,需要的的朋友參考下吧2017-05-05