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条边相加:

    在控制台运行:

  • 相关阅读:
    Linux .bashrc文件设置快速访问快捷键
    Fiddler如何添加ServerIP显示
    软件测试工程师常用工具汇总
    [ASP.NET Core开发实战]基础篇04 主机
    《数据结构与算法之美》24——堆的应用
    [ASP.NET Core开发实战]基础篇03 中间件
    《数据结构与算法之美》23——堆和堆排序
    [ASP.NET Core开发实战]基础篇02 依赖注入
    [ASP.NET Core开发实战]基础篇01 Startup
    [ASP.NET Core开发实战]开篇词
  • 原文地址:https://www.cnblogs.com/insus/p/8057261.html
Copyright © 2011-2022 走看看