using System; class PruebaHerenciaFigura { public class Figura { public const double PI = Math.PI; protected double x, y; public Figura () { } public Figura (double x, double y) { this.x = x; this.y = y; } public virtual double Area () { return x * y; } } public class Circulo : Figura { public Circulo (double r) : base (r, 0) { } public override double Area () { return PI * x * x; } } public class Esfera : Figura { public Esfera (double r) : base (r, 0) { } public override double Area () { return 4 * PI * x * x; } } public class Cilindro : Figura { public Cilindro (double r, double h) : base (r, h) { } public override double Area () { return 2 * PI * x * x + PI + x + y; } } public static void Main () { double r = 7.0, h = 11.0; Figura[] figuras = new Figura[3]; figuras[0] = new Circulo (r); figuras[1] = new Esfera (r); figuras[2] = new Cilindro (r, h); // Muestra resultados. // La invocaciön del método Area ocurre polimófircamente Console.WriteLine ("Área del círculo: {0:F2}", figuras[0].Area ()); Console.WriteLine ("Área de la esfera: {0:F2}", figuras[1].Area ()); Console.WriteLine ("Área del cilindro: {0:F2}", figuras[2].Area ()); } }