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

    在控制台运行:

  • 相关阅读:
    提升10倍生产力:IDEA远程一键部署SpringBoot到Docker
    如何写出让同事无法维护的代码?
    Nginx 极简教程(快速入门)
    实战SpringCloud响应式微服务系列教程(第一章)
    单节点nginx为两台apache服务器提供负载均衡
    监控Linux性能的18个命令行工具
    Nginx/LVS/HAProxy负载均衡软件的优缺点详解(转)
    LVS包转发模型和调度算法(转)
    借助LVS+Keepalived通过DR模式实现负载均衡
    CentOS 7.0 安装中文输入法
  • 原文地址:https://www.cnblogs.com/insus/p/8057261.html
Copyright © 2011-2022 走看看