. 定义基类 形状,包含属性:颜色、边长、半径;包含方法:获取颜色,计算周长、计算面积.

  1. 定义基类 形状,包含属性:颜色、边长、半径;包含方法:获取颜色,计算周长、计算面积.
    定义子类:圆形,正方形、三角形。继承父类属性方法。最终输出颜色、形状、周长和面积
// 定义基类 Shape
class Shape
{
    protected string color;   // 颜色
    protected double length;  // 边长
    protected double radius;  // 半径
    
    // 构造函数
    public Shape(string color, double length, double radius)
    {
        this.color = color;
        this.length = length;
        this.radius = radius;
    }
    
    // 获取颜色
    public string GetColor()
    {
        return color;
    }
    
    // 计算周长
    public virtual double GetPerimeter()
    {
        return 0;
    }
    
    // 计算面积
    public virtual double GetArea()
    {
        return 0;
    }
}

// 定义子类 Circle
class Circle : Shape
{
    // 构造函数
    public Circle(string color, double radius) : base(color, 0, radius)
    {
        
    }
    
    // 计算周长
    public override double GetPerimeter()
    {
        return 2 * Math.PI * radius;
    }
    
    // 计算面积
    public override double GetArea()
    {
        return Math.PI * radius * radius;
    }
}

// 定义子类 Square
class Square : Shape
{
    // 构造函数
    public Square(string color, double length) : base(color, length, 0)
    {
        
    }
    
    // 计算周长
    public override double GetPerimeter()
    {
        return 4 * length;
    }
    
    // 计算面积
    public override double GetArea()
    {
        return length * length;
    }
}

// 定义子类 Triangle
class Triangle : Shape
{
    // 构造函数
    public Triangle(string color, double length) : base(color, length, 0)
    {
        
    }
    
    // 计算周长
    public override double GetPerimeter()
    {
        return 3 * length;
    }
    
    // 计算面积
    public override double GetArea()
    {
        return Math.Sqrt(3) / 4 * length * length;
    }
}

// 测试代码
class Test
{
    static void Main(string[] args)
    {
        // 创建对象
        Circle circle = new Circle("red", 5);
        Square square = new Square("green", 6);
        Triangle triangle = new Triangle("blue", 7);
        
        // 输出
        Console.WriteLine("Circle: color={0}, shape=circle, perimeter={1}, area={2}", circle.GetColor(), circle.GetPerimeter(), circle.GetArea());
        Console.WriteLine("Square: color={0}, shape=square, perimeter={1}, area={2}", square.GetColor(), square.GetPerimeter(), square.GetArea());
        Console.WriteLine("Triangle: color={0}, shape=triangle, perimeter={1}, area={2}", triangle.GetColor(), triangle.GetPerimeter(), triangle.GetArea());
    }
}

输出结果如下:

Circle: color=red, shape=circle, perimeter=31.41592653589793, area=78.53981633974483
Square: color=green, shape=square, perimeter=24, area=36
Triangle: color=blue, shape=triangle, perimeter=21, area=21.217622392718745

注意:基类 Shape 中的周长和面积都定义为虚函数,是因为不同的子类计算方法不同,需要通过子类的重写来实现具体的计算逻辑。