C#多态编程实践:图形类与接口实现

5星 · 超过95%的资源 需积分: 3 18 下载量 65 浏览量 更新于2024-09-17 收藏 95KB DOC 举报
“C#学习笔记07提供了关于多态编程的练习题及答案,涉及抽象类、子类、接口和具体的形状类实现。” 在C#编程语言中,多态性是面向对象编程的核心概念之一,它允许不同类型的对象对同一消息作出不同的响应。本练习题主要围绕这一主题展开,通过创建抽象图形类Shape、矩形类Rect和三角形类Trigle来演示多态性。 首先,我们来看一下提供的代码片段: ```csharp abstract class Shape { public abstract double Area(); public void DisplayArea() { Console.WriteLine(Area()); } } class Rect : Shape { private double l; private double w; public Rect(double l, double w) { this.l = l; this.w = w; } public override double Area() { return l * w; } } class Triangle : Shape { private double a; private double b; private double c; public Triangle(double a, double b, double c) { this.a = a; this.b = b; this.c = c; } public override double Area() { double s = (a + b + c) / 2; return Math.Sqrt(s * (s - a) * (s - b) * (s - c)); } } ``` 这段代码定义了一个抽象类`Shape`,其中包含一个计算面积的抽象方法`Area()`和一个用于显示面积的方法`DisplayArea()`。`Area()`方法是抽象的,意味着它的具体实现必须在派生类中完成。`DisplayArea()`方法调用`Area()`并将其结果打印到控制台。 接着,我们有两个子类`Rect`和`Triangle`继承自`Shape`。`Rect`类实现了矩形的面积计算,而`Triangle`类实现了三角形的面积计算。这两个类都覆盖了`Area()`方法以提供各自形状的面积计算逻辑。 在`Main`方法中,我们创建了`Rect`和`Triangle`的实例,并调用了它们的`DisplayArea()`方法。这展示了多态性,因为虽然`DisplayArea()`方法是在`Shape`类中定义的,但实际执行的是子类中的`Area()`方法。 接下来的题目要求编写一个完整的C#应用程序,包含接口`Shape`,`MyRectangle`类,`MyTriangle`类以及`Test`类。这个任务旨在进一步练习多态编程和接口的使用。 接口`Shape`定义了一组契约,声明了所有形状类必须实现的方法。例如: ```csharp interface IShape { double GetArea(); } ``` 然后,`MyRectangle`和`MyTriangle`类将实现`IShape`接口,提供各自的`GetArea()`实现。`Test`类则可以用来测试这些形状类,创建它们的实例并调用`GetArea()`方法,展示接口多态性。 这个练习旨在帮助学习者掌握C#中抽象类和接口的使用,以及如何利用它们实现多态性。通过这样的练习,开发者能够更好地理解和应用面向对象编程的关键概念,从而编写出更加灵活和可扩展的代码。