Clases y métodos
abstractos
Un método abstracto es un
método sin implementación. Implicitamente es un método virtual que estamos
obligados a sobrecargar en una clase derivada. Estos métodos sólo pueden
aparecer en un clase abstracta. En ambos casos hemos de utilizar la palabra
clave abstract para hacer abstracto un método o una clase. Las clases
abstracta no pueden ser instanciadas, ni tampoco las que deriven de ellas sin
proporcionar un implementación para todos los métodos que carezcan de ella.
Veamos un ejemplo que nos permita definir un método que devuleva el área de un
figura geométrica:
// abstrac.cs
abstract class Figura
{
...
public abstract float Area();
...
}
class Rectangulo: Figura
{
...
public override float Area()
{
return Alto * Ancho;
}
...
}
class Abstract
{
public static Main()
{
Figura[] figuras = new Figura[3];
figuras[0] = new Figura(1, 2); // error, clase abstracta
figuras[1] = new Rectangulo(3, 4); // ok
figuras[2] = new Cuadrado(5); // ok, hereda Area()
foreach (Figura f in figuras)
{
Console.WriteLine("El área de un {0} de {1}x{2} es {3}",
f.GetType(), f.Alto, f.Ancho, f.Area());
}
}
}
DEMOSTRACIÓN
Seleccionamos la opción
‘Console Application’ y colocamos como nombre ‘DemoApp Figura’ y damo click en
el botón OK
Y procederemos a crear 3
clases Figura, Cuadrado y Circulo
La Clase Figura sería la
clase Padre y estará compuesta por dos atributos abstractos
La clase Cuadrado heredando
de Figura
Igual Circulo
En el Program.cs,
ejecutaríamos la nuestra aplicación de la siguiente forma
Y la salida de la consola es
la siguiente:
Ahora crearemos un método
Virtual a nuestra clase Figura
Y comentamos el método
Override en la Clase Cuadrado
La salida Por la consola es
la siguiente
Ahora en nuestra clase
cuadrado crearemos otro método Override pero con el operador New
La salida de la consola
quedaría de la siguiente forma: