C#定义一个抽象类shape,面积、周长、显示颜色等属性;定义求面积、周长、在屏幕上绘图的抽象方法
时间: 2024-10-08 14:18:16 浏览: 42
C# 抽象类,抽象属性,抽象方法(实例讲解)
在C#中,你可以通过定义一个抽象类来实现这样的设计。首先,我们创建一个名为`Shape`的抽象类,它包含了共享的属性如面积(Area)、周长(Perimeter),以及抽象方法来描述形状的行为,例如计算面积和绘制图形。抽象方法前需要添加`abstract`关键字。
```csharp
public abstract class Shape
{
// 公共属性
public double Area { get; set; }
public double Perimeter { get; protected set; }
// 抽象方法 - 计算面积
public abstract double CalculateArea();
// 抽象方法 - 绘制图形(可以提供一个虚方法供子类覆盖)
public virtual void Draw()
{
Console.WriteLine("Drawing a shape");
}
// 定义默认的周长计算方法,某些形状可以直接计算
protected double CalculatePerimeter(double sideLength)
{
return 4 * sideLength; // 示例,适用于正方形或矩形
}
}
```
为了实现这个抽象类,你需要为每种具体的形状(比如圆形、矩形、三角形)创建一个子类,并重写`CalculateArea()`方法和`Draw()`方法。例如:
```csharp
public class Circle : Shape
{
public double Radius { get; set; }
public override double CalculateArea()
{
return Math.PI * Radius * Radius;
}
public override void Draw()
{
Console.WriteLine($"Drawing a circle with radius {Radius}");
}
}
public class Rectangle : Shape
{
public double Width { get; set; }
public double Height { get; set; }
public override double CalculateArea()
{
return Width * Height;
}
public override void Draw()
{
Console.WriteLine($"Drawing a rectangle with width {Width} and height {Height}");
}
}
```
阅读全文