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

#11 Daniel A. Calvin
21/11/2007 - 18:45 | Informe spam
Hola Carlos

A lo que me refería es que son conceptos distintos.
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.
Tambien me podes decir que si la clase es abstarcta tambien hay que
implementar, o al menos lo que no se defina como virtual
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.

:)

Saludos

Daniel Calvin





Daniel A. Calvin
MCP


"Carlos M. Calvelo" wrote:

On 21 nov, 16:26, "Lluis Franco" wrote:
> > Entonces las clases dicen guau y miau. Las intefaces solo dicen miau.
>
> Basta por favor! Como sigamos así esto va a parecer todavía más un zoo,
> jejejeje...
> Un saludo Carlos,

Y para completar el cuadro:
Los tipos-valor en esto de la herencia "no dicen ni pío" :-) :-)

Saludos,
Carlos


Respuesta Responder a este mensaje
#12 Daniel A. Calvin
21/11/2007 - 19:35 | Informe spam
Extraido de Herencia en C#, segun msdn:

A diferencia de C++, en C# sólo se permite la herencia simple. En otras
palabras, una clase puede heredar la implementación de una sola clase base.
Sin embargo, una clase puede implementar más de una interfaz. La siguiente
tabla muestra ejemplos de herencia de clases e implementación de interfaces:

Herencia Ejemplo
Ninguna
class ClassA { }

Simple
class DerivedClass: BaseClass { }

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

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

Saludos
Daniel A. Calvin
MCP


"Daniel A. Calvin" wrote:

Hola Carlos

A lo que me refería es que son conceptos distintos.
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.
Tambien me podes decir que si la clase es abstarcta tambien hay que
implementar, o al menos lo que no se defina como virtual
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.

:)

Saludos

Daniel Calvin





Daniel A. Calvin
MCP


"Carlos M. Calvelo" wrote:

> On 21 nov, 16:26, "Lluis Franco" wrote:
> > > Entonces las clases dicen guau y miau. Las intefaces solo dicen miau.
> >
> > Basta por favor! Como sigamos así esto va a parecer todavía más un zoo,
> > jejejeje...
> > Un saludo Carlos,
>
> Y para completar el cuadro:
> Los tipos-valor en esto de la herencia "no dicen ni pío" :-) :-)
>
> Saludos,
> Carlos
>
>
Respuesta Responder a este mensaje
#13 Carlos M. Calvelo
21/11/2007 - 20:07 | Informe spam
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
#14 Daniel A. Calvin
21/11/2007 - 20:13 | Informe spam
Hola Alfredo

Siguiendo tu consejo entre al sitio de sun, estos señores son los promotores
de un lenguaje OO llamado java, atl vez lo esxuchaste nombrar. :)

Te pégo una porcion, pero por las dudas primero te extraigo una frase:

In Java, a class can inherit from only one class but it can implement more
than one interface.

Fijate que en el caso de interface habla de implementar y que en el caso de
calse habla de heredar... , seguramente para vos sea simple casualidad, para
mi es el correcto uso de la terminología OO.

Saludos, siempre un gusto charlar contigo. :))

Interfaces and Multiple Inheritance
Interfaces have another very important role in the Java programming
language. Interfaces are not part of the class hierarchy, although they work
in combination with classes. The Java programming language does not permit
multiple inheritance (inheritance is discussed later in this lesson), but
interfaces provide an alternative.

In Java, a class can inherit from only one class but it can implement more
than one interface. Therefore, objects can have multiple types: the type of
their own class and the types of all the interfaces that they implement. This
means that if a variable is declared to be the type of an interface, its
value can reference any object that is instantiated from any class that
implements the interface. This is discussed later in this lesson, in the
section titled "Using an Interface as a Type."

http://java.sun.com/docs/books/tuto...rface.html



Daniel A. Calvin
MCP


"Alfredo Novoa" wrote:

On Wed, 21 Nov 2007 10:35:01 -0800, Daniel A. Calvin
wrote:

>Extraido de Herencia en C#, segun msdn:

Te sugiero que consultes fuentes más confiables.


Saludos

Respuesta Responder a este mensaje
#15 Carlos M. Calvelo
21/11/2007 - 20:14 | Informe spam
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
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida