problema con HERENCIA

21/05/2007 - 20:56 por Daniel Maldonado | Informe spam
Estimados. estoy estudiando C#.net y estoy comenzando mi larga y tediosa
curva de aprendizaje. Si bien no será tan dificil dado que vengo desde C++
con POO. pero estuve haciendo esta prueba de herencia y el compilador me
tira el siguiente error. Pongo el código para que vean la simplicidad del
ejemplo.

Defino una clase MAMIFEROS y luego una clase HUMANOS como herencia de
MAMIFEROS y vean el problema principalmente con el constructor de la clase
HUMANOS.

Me dice: " Ninguna sobrecarga para el método MAMIFEROS acepta "0" argumentos
".

Cual sera el error conceptual que estoy cometiendo ???.


class Mamiferos

{

public string strNombreDeEspecie;

public int intTipoDeEspecie;

public Mamiferos(string n, int t)

{

this.strNombreDeEspecie = n;

this.intTipoDeEspecie = t;

}

}



****************************************************************************
********************

****************************************************************************
********************

class Humanos : Mamiferos

{

public string strRazaDeHumano;

public int intCantidadHumanos;

public Humanos (string r, int c)

{

this.strNombreDeEspecie = r;

this.intCantidadHumanos = c;

}

}

Preguntas similare

Leer las respuestas

#1 RFOG
21/05/2007 - 20:57 | Informe spam
Es una de las cosas del .NET. Como dices venir de C++ te comento las
diferencias.

En .NET una clase define un constructor por defecto... si no hay ningún
constructor definido. Si implementas cualquier tipo de constructor y
utlizas la herencia debes especificar un constructor por defecto.

Y otra: desde un constructor no se puede llamar a otro de la misma clase,
es decir, siendo todo constructores no puedes

ctor()
{
ctor(0.0);
}

ctor(int a, int b)
{
}

Debes utilizar una función intermedia.


En Mon, 21 May 2007 20:56:27 +0200, Daniel Maldonado
escribió:

Mostrar la cita
Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
El que dé rosas de comer al burro, cobrará con un rebuzno.
#2 Octavio Hernandez
21/05/2007 - 21:28 | Informe spam
Hola,

En este caso el problema simplemente es que no estás indicando explícitamte
en el constructor de Humanos la llamada al constructor de su clase base. Por
lo tanto, el compilador intenta insertar una llamada a un constructor sin
argumentos
de Mamiferos, que no existe.

La solución es cambiar el constructor de Humanos por algo así:

public Humanos (string r, int c) : base(r, 0) // aqui se llama
al const. de Mamiferos

{

this.intCantidadHumanos = c;

}

Ojo que tu clase viola algunos principios básicos de la POO (válidos tanto
en C# como C++),
como el encapsulamiento de los campos.

Slds - Octavio


"Daniel Maldonado" escribió en el
mensaje news:%
Mostrar la cita
#3 RFOG
21/05/2007 - 21:40 | Informe spam
Hola, O,

¿No tiene que ver con lo que he comentado? En C++/CLI es así (acabo de
leerlo).

En Mon, 21 May 2007 21:28:49 +0200, Octavio Hernandez
escribió:

Mostrar la cita
Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
El que dé rosas de comer al burro, cobrará con un rebuzno.
#4 Octavio Hernandez
21/05/2007 - 21:52 | Informe spam
Hola Rafa,

Para usar la herencia en C# no hace falta q la clase base tenga un
constructor por defecto; lo que pasa es que si no lo tiene, las clases
herederas deberán llamar explícitamente a uno de los que existan. Si
tienes:

public class Persona
{
// único constructor
public Persona(string nombre)
{
// hacer algo con 'nombre'
}

Entonces:

public class Empleado
{
// hay q llamar explícitamente al de Persona mediante base()
public Empleado(string nombre, string empresa) : base(nombre)
{
// hacer algo con 'empresa'
}

Por otra parte, un constructor sí puede llamar a otro de la misma clase:

// otro constructor de Empleado
// llama al anterior mediante this()
public Empleado(string nombre) : this(nombre, null)
{
}

Slds - Octavio
#5 RFOG
21/05/2007 - 22:14 | Informe spam
Okis, entonces es lo mismo pero visto de diferente forma...

En Mon, 21 May 2007 21:52:26 +0200, Octavio Hernandez
escribió:

Mostrar la cita
Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
El que dé rosas de comer al burro, cobrará con un rebuzno.
Ads by Google
Search Busqueda sugerida