Buenas gente.
Viendo este código. Puedo hacer lo que hago en el manejador del evento? Me lo preguntaron en un test y contesté que no porque las clases abstractas no se pueden instanciar pero .... en este caso que instanciamos? la clase abstracta? o la clase que hereda de la abstracta?
Código:
using System;
using System.Windows.Forms;
namespace ClasesAbstractas
{
abstract class FiguraGeometrica {
public abstract double Area();
}
class Circulo: FiguraGeometrica {
private int radio;
// A read-write instance property:
public int Radio {
get {
return radio;
}
set {
radio = value;
}
}
public Circulo(int r) {
Radio = r;
}
public override double Area() {
return (double)(Radio*Radio*3.14);
}
}
//calse tirangulo
class Triangulo: FiguraGeometrica
{
//propiedades
private int ladA;
private int ladB;
private int ladC;
//propiedades
public int LadoA
{
get {
return ladA;
}
set {
ladA = value;
}
}
public int LadoB {
get {
return ladB;
}
set {
ladB = value;
}
}
public int LadoC {
get {
return ladC;
}
set {
ladC = value;
}
}
public Triangulo (int a, int b, int c)
{
LadoA = a;
LadoB = b;
LadoC = c;
}
public override double Area()
{
double num, mPer;
mPer = (double)(LadoA+LadoB+LadoC)/2;
num = mPer*(mPer-LadoA)*(mPer-LadoB)*(mPer-LadoC);
if (num <= 0 ) {
MessageBox.Show("posiblemente el triangulo no exista, intentelo nuevamente");
return 0;
}
else
return Math.Pow(num,0.5);
}
}
class Cuadrado: FiguraGeometrica
{
//atributos
private int lado;
public int Lado {
get {
return lado;
}
set {
lado = value;
}
}
public Cuadrado(int l) {
Lado = l;
}
public override double Area() {
return Lado*Lado;
}
}
}
private void cmdgetAreaCir_Click(object sender, System.EventArgs e)
{
//Es correcto? diganme que no
FiguraGeometrica miFigura = new Cuadrado()
}
Saludos