c# - 如何以不同的方式制作此代码?

时间:2013-09-13 05:22:03

标签: c# asp.net

下面的代码是我的面试问题,但我不知道如何做到完美

代码:

    public class Shape
    {
        public void Rectangle(int length, int height)
        { 
            Console.Write(length * height);
        }

        public void Circle(int radius)
        {
            Console.Write(3.14 * (radius * radius));
        }
    }

有什么想法吗?提前致谢

2 个答案:

答案 0 :(得分:4)

怎么样?

public abstract class Shape
{
    public abstract int CalcArea();
}

public class Rectangle : Shape
{
    public int Height { get; set; }
    public int Width { get; set; }

    public override int CalcArea()
    {
        return Height * Width;
    }
}

public class Circle : Shape
{
    public float Radius { get; set; }

    public override int CalcArea()
    {
        return Math.PI * (Radius * Radius);
    }
}

答案 1 :(得分:0)

  • 使Shape成为接口或抽象类

  • getArea()

  • 中声明抽象方法Shape
  • 制作Rectangle的{​​{1}}和Circle子类,ShapeRectangle具有高度和宽度,Circle具有半径。

  • getArea()Rectangle中实施Circle(在Rectangle中返回h * w,在{{中返回π* r 2 1}})