Herencia multiple

20/11/2007 - 09:04 por José Mª Toro Bermejo | Informe spam
Hola chic@s.
Tengo un producto de terceros del que realizo una herencia multiple de dos
de sus clases.
public class Clase : ClaseA, ClaseB
{
};

Con la palabra base accedo a los metodos y miembros de ClaseA pero no a los
de la ClaseB.
¿Como puedo acceder a los metodos bases de la ClaseB?

Gracias y un saludo

Preguntas similare

Leer las respuestas

#16 Daniel A. Calvin
21/11/2007 - 20:36 | Informe spam
Hola carlos

No me estas corrigiendo a mi, estas corriegiendo al msdn:

ms-help://MS.VSExpressCC.v80/MS.NETFra...df8690.htm

Ahi vas a ver que ms dice:
Herencia Ejemplo
-
Simple class DerivedClass: BaseClass { }
Ninguna, class ImplClass: IFace1, IFace2 { }
implementa dos interfaces

El copncepto es Clases se heredan, interfaces se implementan.
Te pase el url del articulo en el msdn, no lo escribi yo, solo lo copie.


Saludos

Daniel A. Calvin
MCP


"Carlos M. Calvelo" wrote:

Hola otra vez Daniel,

On 21 nov, 19:35, Daniel A. Calvin
wrote:
> Extraido de Herencia en C#, segun msdn:
>
> A diferencia de C++, en C# sólo se permite la herencia simple.

Solo se permite herencia simple "de implementación".

> En otras
> palabras, una clase puede heredar la implementación de una sola clase base.

Bien.

> Sin embargo, una clase puede implementar más de una interfaz.

Puede heredar más de una interfaz. Y después se deberán
proporcionar sus implementaciones.

> La siguiente
> tabla muestra ejemplos de herencia de clases e implementación de interfaces:
>
> Herencia Ejemplo
> Ninguna
> class ClassA { }

De acuerdo.

>
> Simple
> class DerivedClass: BaseClass { }

De acuerdo. Con una connotación: aquí se está heredando
una interfaz y una implementación.

>
> Ninguna, implementa dos interfaces
> class ImplClass: IFace1, IFace2 { }

No estoy de acuerdo. Aquí se está aplicando herencia
múltiple de interfaz. La implementación de esas
dos interfaces debe proporcionarse después.

>
> Simple, implementa una interfaz
> class ImplDerivedClass: BaseClass, IFace1 { }

No estoy de acuerdo. Aquí se heredan dos interfaces
y solo la implementación de la primera.

Saludos,
Carlos

Respuesta Responder a este mensaje
#17 Daniel A. Calvin
21/11/2007 - 20:43 | Informe spam
Herencia segun wikipedia:

http://es.wikipedia.org/wiki/Herenc...e_herencia

Bueno, ese es el fundamento, busquen en libros, cuando se habla de soporte
de herencia se habla se simple o multiple, indeopendientemente si se soporta
o no implementación de multiples interfaces.

Saludos

Daniel A. Calvin
MCP


"Carlos M. Calvelo" wrote:

Hola Daniel,

On 21 nov, 18:45, Daniel A. Calvin
wrote:
> Hola Carlos
>
> A lo que me refería es que son conceptos distintos.

Claro que lo son, por eso tienen nombres distintos:
herencia de interfaz y de implementación.

> Muchs veces me pasa hablando con gente que no tiene todavia claros los
> conceptos uno habla de heredar interfaces y es confuso, ya que solo se
> implementan.

Pues habrá que empezar por el principio; explicando que una clase
tiene dos partes, una interfaz (como se ve desde fuera; el que; un
tipo)
y una implementación (el como se proporciona la promesa que hace
el interfaz).

Si se tiene eso claro no es dificil entonces entender que al heredar
de una clase se están aplicando dos tipos de herencia a la vez.


> Tambien me podes decir que si la clase es abstarcta tambien hay que
> implementar, o al menos lo que no se defina como virtual

Claro, una clase abstracta con todos los métodos abstractos es
una interfaz pura.


> La diferencia real entre heredar de una clase e implementar una interface es
> grande. Por lo menos al sentarse a escribir.
>
> Ej.:
>
> public class MYList<T>:List<T>
>
> o
>
> public class MYList<T>:IList<T>
>
> Ahora fijate cuanto hay que escribir en un caso y cuanto en el otro.
>
> :)
>

De acuerdo. Pero eso no cambia para nada los conceptos.
Pero me salta a la vista que al heredar de una clase lo
sigues llamando 'heredar' y cuando se trata de una interfaz
lo llamas implementar.
En el primer caso (clase) se están heredando una interfaz
y una implementación. En el segundo caso se está heredando
una interfaz y hay que proporcionar la implementación.

Saludos,
Carlos

Respuesta Responder a este mensaje
#18 Carlos M. Calvelo
21/11/2007 - 20:55 | Informe spam
Hola Daniel,

On 21 nov, 20:36, Daniel A. Calvin
wrote:
Hola carlos

No me estas corrigiendo a mi, estas corriegiendo al msdn:

ms-help://MS.VSExpressCC.v80/MS.NETFra...df8690.htm

Ahi vas a ver que ms dice:
Herencia Ejemplo
Simple class DerivedClass: BaseClass { }
Ninguna, class ImplClass: IFace1, IFace2 { }
implementa dos interfaces

El copncepto es Clases se heredan, interfaces se implementan.
Te pase el url del articulo en el msdn, no lo escribi yo, solo lo copie.




Después de leer esto yo me pregunto:
Con qué intención me has pasado ese artículo entonces?
Buscando apoyo para la posición que ya habías tomado?

No irás a decirme ahora que era para decirme que no
estás de acuerdo con lo que pone?!

Saludos,
Carlos
Respuesta Responder a este mensaje
#19 Daniel A. Calvin
21/11/2007 - 21:09 | Informe spam
Te lo mando reafirmando mi posicion.
Mira el cuadrito, habla de herencia solo cuando hereda de clases, en el otro
caso dice implementa y donde diria hereda dice ninguna.

No busco un aliado a mi posicion, solo te justifico porque entiendo que la
terminologia correcta es heredar e implementar, la primera para clases la
segunda para interfaces.

Mira la definicion de herencia en wikipedia, solo habla de simple o multiple
y no involucra interfaces. ahh y pone de ejemplo c# y java.

Tambien podes pegrale una irada al link que mande desde la web de sun, donde
hace el mismo tratamiento para herencia e implementación.

No cambie de posicion y no trato de justificar, simplemente respaldo mis
dichos y los fiundamento.

Saludos

Daniel A. Calvin
MCP


"Carlos M. Calvelo" wrote:

Hola Daniel,

On 21 nov, 20:36, Daniel A. Calvin
wrote:
> Hola carlos
>
> No me estas corrigiendo a mi, estas corriegiendo al msdn:
>
> ms-help://MS.VSExpressCC.v80/MS.NETFra...df8690.htm
>
> Ahi vas a ver que ms dice:
> Herencia Ejemplo
> Simple class DerivedClass: BaseClass { }
> Ninguna, class ImplClass: IFace1, IFace2 { }
> implementa dos interfaces
>
> El copncepto es Clases se heredan, interfaces se implementan.
> Te pase el url del articulo en el msdn, no lo escribi yo, solo lo copie.
>

Después de leer esto yo me pregunto:
Con qué intención me has pasado ese artículo entonces?
Buscando apoyo para la posición que ya habías tomado?

No irás a decirme ahora que era para decirme que no
estás de acuerdo con lo que pone?!

Saludos,
Carlos

Respuesta Responder a este mensaje
#20 Octavio Hernandez
21/11/2007 - 21:43 | Informe spam
Hola, Daniel!

... uno habla de heredar interfaces y es confuso, ya que solo se
implementan.



Esto es perfectamente válido en C# (y VB):

public interface ICollection: IEnumerable
{
int Count { get; set; }
// otras cosas que añade ICollection a IEnumerable
}

Slds - Octavio
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida