tengo este fragmento de codigo:
Código:
no entiendo esa parte de la construccion; los objetos c,s,l llegarina a ser objetos de la clase Circle,Sphere o Cylinder, respectivamente ? o todos son objetos de la clase Dimensions?using System; using System.Collections.Generic; using System.Text; namespace PruebaMetodosVirtuales { class Program { static void Main(string[] args) { double r = 3.0, h = 5.0; Dimensions c = new Circle(r); Dimensions s = new Sphere(r); Dimensions l = new Cylinder(r, h); // Display results: Console.WriteLine("Area of Circle = {0:F2}", c.Area()); Console.WriteLine("Area of Sphere = {0:F2}", s.Area()); Console.WriteLine("Area of Cylinder = {0:F2}", l.Area()); } } public class Dimensions { public const double PI = Math.PI; protected double x, y; public Dimensions() { } public Dimensions(double x, double y) { this.x = x; this.y = y; } public virtual double Area() { return x * y; } } public class Circle : Dimensions { public Circle(double r) : base(r, 0) { } public override double Area() { return PI * x * x; } } class Sphere : Dimensions { public Sphere(double r) : base(r, 0) { } public override double Area() { return 4 * PI * x * x; } } class Cylinder : Dimensions { public Cylinder(double r, double h) : base(r, h) { } public override double Area() { return 2 * PI * x * x + 2 * PI * x * y; } } }
ya q las clases Circle,Sphere y Cylinder heredan de la clase Dimensions
y al llamar al metodo Area (al llamar desde los objetos c,s,l) a cual metodo llama ,al virtual del padre o al q le corresponde a cada uno?
y una cosa mas ,estuve leyendo tutoriales pero hay algo q no le entiendo sobre los metodos virtuales( ya entiendo su uso,pero no su funcionamiento) osea dice que al poner a un metodo override ,reemplaza el codigo del metodo de la clase padre, pero en realidad no lo reemplaza ,porque al volver a llamar al metodo virtual de la clase padre el codigo es el mismo
alguien podria explicarmelo mejor porfavor?