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

#6 Alfredo Novoa
22/05/2007 - 00:13 | Informe spam
Hola Octavio,

On Mon, 21 May 2007 21:28:49 +0200, "Octavio Hernandez"
wrote:

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.



No estoy de acuerdo. No hay ninguna diferencia entre un campo público
y una propiedad que no compruebe nada como

public NombreDeEspecie
{
get { return nombreDeEspecie; }
set { nombreDeEspecie = value; }
}

En lenguajes que no tienen propiedades si tiene más sentido lo de
ocultar los campos.

Lo que si que es un fallo es usar la infame notación húngara X-)


Saludos
Alfredo
Respuesta Responder a este mensaje
#7 Octavio Hernandez
22/05/2007 - 01:12 | Informe spam
Hola, Alfredo!

No estoy de acuerdo. No hay ninguna diferencia entre un campo público
y una propiedad que no compruebe nada como...



Bueno, para mí sí la hay. En eso no nos vamos a poner de acuerdo :-)
Aunque fuera por la posibilidad potencial de cambiar el día de mañana la
implementación de la propiedad sin afectar a los clientes, cosa q jamás
podrás hacer si es un campo, valdría la pena tener la propiedad...

Slds - Octavio
Respuesta Responder a este mensaje
#8 Alfredo Novoa
22/05/2007 - 01:25 | Informe spam
Hola Octavio,

On Tue, 22 May 2007 01:12:27 +0200, "Octavio Hernandez"
wrote:

Bueno, para mí sí la hay. En eso no nos vamos a poner de acuerdo :-)
Aunque fuera por la posibilidad potencial de cambiar el día de mañana la
implementación de la propiedad sin afectar a los clientes, cosa q jamás
podrás hacer si es un campo, valdría la pena tener la propiedad...



Claro que puedes. Solo tienes que renombrar el campo y crear una
propiedad con el mismo nombre.

Yo de todas formas siempre uso propiedades, aunque más que nada para
que las herramientas de análisis de código no me den el coñazo :-)


Saludos
Respuesta Responder a este mensaje
#9 Octavio Hernandez
22/05/2007 - 01:39 | Informe spam
Alfredo,

Claro que puedes. Solo tienes que renombrar el campo y crear una
propiedad con el mismo nombre.



Eso violaría la compatibilidad binaria, ¿no?
Solo sería compatible a nivel de código fuente, y ni siquiera al 100% -
cierto código fuente podría estarse refiriendo mediante reflexión al
campo asumiendo que es un campo...

Slds - Octavio
Respuesta Responder a este mensaje
#10 principiante
22/05/2007 - 01:49 | Informe spam
... C#.net y estoy comenzando mi larga y tediosa
curva de aprendizaje.




Vaya!! cuan de acuerdo estoy con eso :)
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida