Estaba leyendo un ejemplo de herencia simple y encontré la idea básica de que un cuadrado es un tipo base y un rectángulo derivado de un cuadrado.Pobre ejemplo de herencia en C#
El ejemplo para establecer las dimensiones cuadradas usaba una propiedad llamada Size
. El ejemplo para el rectángulo pasó a usar Width
y Height
.
Esto no tenía sentido en mi cabeza, así que lo codifiqué.
El problema parece ser que al acceder a rectangle
, siempre habrá una propiedad confusa llamada 'Size
' presente.
¿Tengo este derecho? ¿O hay alguna manera de ocultar otras clases para que no vean Size
al mirar rectangle
?
public class square
{
public int Size { get; set; }
public square(int size)
{
this.Size = size;
}
}
public class rectangle : square
{
public int Width { get { return base.Size; } set { base.Size = value; } }
public int Height { get; set; }
public rectangle(int width, int height)
: base(width)
{
Height = height;
}
}
Debería ser al revés: cuadrado debe derivar de un rectángulo. Un cuadrado también tiene un ancho y una altura, simplemente son iguales para el cuadrado. Un rectángulo puede, por supuesto, tener diferentes valores. – xxbbcc
No es el primer ejemplo pobre de herencia que encontrará en su estudio, o su carrera en ese sentido. Felicitaciones por detectarlo, el código google huele alguna vez ... –
@Tod El artículo 35 es "Considerar alternativas a las funciones virtuales". Mi respuesta no contiene una sola función virtual (de hecho, a menos que obtenga otra clase de 'Cuadrado' o 'Rectángulo', no puede mutar un objeto de ningún tipo), así que preocúpese de comentar cómo responde mi respuesta " ¿completamente equivocado?" –