Consulta sobre herencia

26/01/2004 - 08:20 por EL OSO | Informe spam
Hola soy nuevo y me gustaria ver si me pueden aclarar una duda por favor.

Supongan que tenemos 3 clases, A, B, y C.
A es abstracta
B hereda de A
y C es SEALED y hereda de B.

B tiene un constructor con 2 parametros que se asignan a dos propiedades de
B (una privada, otra protected).
C tiene un constructor con 2 parametros que se asignan a dos propiedades de
C (una privada, y la otra es la protected heredada de B).

Al compilar, manda error (subrayando el constructor de C) argumentando que
no existen constructores en B que tomen 0 parametros.

Si hago un constructor en B que no tome parametros -public B() {}- compila
sin problemas.
El problema es que no quiero que B se pueda construir sin parametros ya que
no puedo permitir una instancia de B bajo esas condiciones.

Por que ocurre ese error? Por que me pide un constructor de B con 0
parametros para construir un C?
Muchas gracias de antemano!!
 

Leer las respuestas

#1 sergi
26/01/2004 - 08:56 | Informe spam
Las clases no heredan constructores. Lo que te ocurre es que tu clase B no
dispone de un constructor por defecto (sin parámetros) que el CLR pueda
llamar automáticamente, por lo tanto debes llamar explicitamente al
constructor de tu clase base B desde tu clase derivada C utilizando la
palabra clave 'base'

<code>
abstract public class A
{

}

public class B : A
{
public B (string a, string b)
{

}
}
sealed class C:B
{
public C(int a, int b, string c, string d):base(c, d)
{
}

}

</code>

Un saludo,

Sergio Borrás

"EL OSO" wrote in message
news:#
Hola soy nuevo y me gustaria ver si me pueden aclarar una duda por favor.

Supongan que tenemos 3 clases, A, B, y C.
A es abstracta
B hereda de A
y C es SEALED y hereda de B.

B tiene un constructor con 2 parametros que se asignan a dos propiedades


de
B (una privada, otra protected).
C tiene un constructor con 2 parametros que se asignan a dos propiedades


de
C (una privada, y la otra es la protected heredada de B).

Al compilar, manda error (subrayando el constructor de C) argumentando que
no existen constructores en B que tomen 0 parametros.

Si hago un constructor en B que no tome parametros -public B() {}- compila
sin problemas.
El problema es que no quiero que B se pueda construir sin parametros ya


que
no puedo permitir una instancia de B bajo esas condiciones.

Por que ocurre ese error? Por que me pide un constructor de B con 0
parametros para construir un C?
Muchas gracias de antemano!!


Preguntas similares