虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > C#编程 > 基于C#的抽象类别详解

基于C#的抽象类别详解
类别:C#编程   作者:码皇   来源:互联网   点击:

下面小编就为大家分享一篇基于C 的抽象类别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

抽象类,有3个特点:

第1个,不能被实例化。

第2个,类中的抽象方法在继承的子类中必须重写。

第3个,类一旦有抽象方法出现,那这个类必须定义为抽象类。

现实开发中,发现有共同的代码,可以把这些共同的代码放在一个抽象类中。举个例子,计算四边形的周长。

矩形,长方形,正方形:

    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;
    }
    }

从上面三个类别中,你均可以看到有一个方法,Perimeter()是计算四边形的周长。

经根博文开头所言,你可以把这个方法抽出来,放在一个抽象类中,统一接口:

    public abstract class Quadrilateral {
    //周长 public abstract double Perimeter();
    }

把方法写成抽象方法之后,每个类需要继承此抽象类,并需要重写 override抽象的方法。

下面验证一下代码,如需要计算一个不规则的四边形的周长,那就是4条边相加:

在控制台运行:

以上这篇基于C#的抽象类别详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

  • C#中抽象类与接口的区别详解
  • C#抽象类和接口的区别分析
相关热词搜索: C 抽象类别