none
Herencia Multiple vs Herencia Simple RRS feed

  • Pregunta

  • Bueno lo que quisiera saber las ventajas y desventajas de ambas herencias, y tambien saber si c++.NET soporta la herencia multiple.
    Gracias.


    Serg
    martes, 7 de abril de 2009 15:44

Todas las respuestas

  • Soy bastante novato en .net, este es recién mi segundo mensaje... pero creo que puedo responder tu pregunta (ya que a pesar de ser un noob en .net ya he trabajado con c++, php y java).

    En c++ original (no se si c++.net también es así, aunque en teoría podría serlo), el lenguaje acepta herencia múltiple, lo cual hace que un programador pueda generar una clase que deriva de más de una clase. Te pongo un ejemplo:
    Creas una clase llamada transporte, esta clases la derivás en dos llamadas transporte-terrestre y transporte-acuático, hasta ahí vamos bien, pero vos después creas una clase llamada overcraft (que son esa especie de lancha que se infla la parte de abajo y puede andar por la tierra)... entonces, vos podés heredar transporte-terrestre porque anda por la tierra y también podés heredar transporte-acuático porque también anda por el agua. Dicho así, no parecería tener ningún problema, pero esas clases derivan de transporte, con lo cual van a tener métodos repetidos, con lo que se empieza a crear ambigüedad y aumenta la complejidad (pensá que después se pueden seguir derivando clases y demás yerbas.
    Entonces, en los lenguajes de más alto nivel (no se si todos, pero si varios), se quitaron las herencias múltiples y sólo permiten herencia simple, donde una clase puede extender las características de otra clase y de ningún otra, es decir, que solo puede heredar o tomar atributos de un solo padre o de una sola clase.
    ¿Y cómo hacer para agregar métodos (o funciones) en común a varias clases que no tienen nada en común? Bueno, en ese caso se crea una interface, en la cual se escriben lo que se conoce como "firma" de los métodos, y se deja la implementación a cada una de las clases que implementen la interfaz. Si vos implementás en una clase una interfaz, esta te obliga a definir todos los métodos que hay en ella (aunque sea una definición vacía), con lo cual uno se asegura que no se va a olvida nunca de algún método.

    Espero haberte sido de ayuda.

    Gabriel
    viernes, 17 de abril de 2009 15:49
  • Hola, lo que dice Gabriel es muy cierto y esta bien ejemplificado. Pero con respecto a tu pregunta de si c++.net soportaba herencia multiple, tengo entendido que no ya que toda la plataforma .NET solo soporta herencia simple... o por lo menos eso tengo entendido. Saludos!

    martes, 5 de mayo de 2009 2:02
  • No acepta Herencia multiple, lo mas cerca a llegar a utilizar eso seria implementando interfaces, Seria algo asi como una herencia multiple aunque el nombre es mas implementacion que herencia multiple
    jueves, 28 de julio de 2011 18:53
  • C++ soporta la herencia multiple otros lenguajes de la plataforma no cmo por ejemplo c que no la soporta pero permite implementar multiples interfaces
    jueves, 6 de octubre de 2011 1:52