zoukankan      html  css  js  c++  java
  • 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);
            }
        }
    Source Code

    长斜方形,长菱形:

     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);
            }
        }
    Source Code

    梯形,不等边四边形:

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

    从上面三个类别中,你均可以看到有一个方法,Perimeter()是计算四边形的周长。
    经根博文开头所言,你可以把这个方法抽出来,放在一个抽象类中,统一接口:

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

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

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

    在控制台运行:

  • 相关阅读:
    C#读取Excel设置(亲测可用)
    vue element-ui的对话框dialog没有height怎么解决?
    sqlserver不同服务器的不同数据库如何复制
    es6-对象与数组的解构赋值
    win10电脑上不了网了
    sqlserver数据库备份之后再还原
    “相对路径”以及“绝对路径”使用之坑
    sqlserver表-添加大量测试数据
    vue文件命名规范
    Git大小写问题
  • 原文地址:https://www.cnblogs.com/insus/p/8057261.html
Copyright © 2011-2022 走看看