Por Mauricio Paniagua Morales – Estudiante de la carrera de Informática

En la actualidad, existen diversos lenguajes de programación, cada uno con su especialidad que lo caracteriza del resto. Generalmente, se dice que lo que puedas hacer en un lenguaje lo podrás hacer en otro, esta idea es en cierto modo correcta; sin embargo, dependiendo del lenguaje de programación que se utilice y la complejidad del problema, será más fácil o difícil darle una solución. En el presente trabajo se busca detallar las diferencias que existen entre los lenguajes de programación orientados a objetos, los cuales son Java y C#.

Para entender mejor las diferencias en la herencia entre ambos lenguajes, hay que saber qué es la herencia en programación. La herencia es un pilar importante de la programación orientada a objetos que consiste en pasar un código ya hecho de una clase a otra; en otras palabras, es la reutilización de código, en la cual se crea una nueva clase. Por lo tanto, debe haber dos o más clases para poder ser efectuada y la nueva clase hereda o absorbe los atributos y métodos que tenga la clase ya existente. La herencia es una forma para reducir el tiempo de desarrollo de un programa, debido a que los programadores no tienen la necesidad de estar creando los mismos atributos o métodos que ya existían en otras clases.

En el lenguaje de Java, una clase que se hereda se denomina superclase. La clase que hereda se llama subclase. Por lo tanto, una subclase es una versión especializada de una superclase. Hereda todas las variables y métodos definidos por la superclase y agrega sus propios elementos únicos. (Walton, 2018, párr. 2)

Para el mejor entendimiento de la terminología usada en la cita anterior, se definirán 3 conceptos importantes de la herencia en Java:

“Superclase: la clase cuyas características se heredan se conoce como superclase (o una clase base o una clase principal).
Subclase: la clase que hereda la otra clase se conoce como subclase (o una clase derivada, clase extendida o clase hija). La subclase puede agregar sus propios campos y métodos además de los campos y métodos de la superclase.
Reutilización: la herencia respalda el concepto de “reutilización”, es decir, cuando queremos crear una clase nueva y ya hay una clase que incluye parte del código que queremos, podemos derivar nuestra nueva clase de la clase existente. Al hacer esto, estamos reutilizando los campos/atributos y métodos de la clase existente”. (Walton, 2018, párr. 3)

Las diferencias a nivel de código y sintaxis son las palabras reservadas de cada lenguaje. En el caso de Java, se suele utilizar la palabra reservada “extends” que hace referencia a que una clase hija hereda de una clase padre, a nivel de código. Luego, para realizar una exitosa herencia en Java, se debe crear un constructor que posea los atributos de la clase “padre” y para eso se utiliza la palabra “super”.

 

En C# no se permite la herencia múltiple, lo que quiere decir que no se puede heredar de más de una clase a la vez; si lo vemos de una forma sencilla la herencia no es más que la facultad de un objeto de heredar características de otro. (Codigo fuente, 2012, párr. 2)

Por otro lado, en C# es diferente: solo se utiliza una palabra reservada que se le conoce como “base”, teniendo similitud con “super”, por el hecho de que es usada en el constructor.

Para concluir, las diferencias en la herencia entre ambos lenguajes, más allá de ser compleja o extensa, está principalmente presente a la hora de hacer código. Como ya antes se mencionó, generalmente, las diferencias que existen entre un lenguaje y otro se encuentran casi siempre a nivel de sintaxis. Puede variar los modelos o la forma en la que se implementa, pero la idea, en el caso de la herencia, es la misma.

 

MOXIE es el Canal de ULACIT (www.ulacit.ac.cr), producido por y para los estudiantes universitarios, en alianza con el medio periodístico independiente Delfino.cr, con el propósito de brindarles un espacio para generar y difundir sus ideas.  Se llama Moxie - que en inglés urbano significa tener la capacidad de enfrentar las dificultades con inteligencia, audacia y valentía - en honor a nuestros alumnos, cuyo “moxie” los caracteriza.

Referencias bibliográficas:
• Codigo fuente. (2012). Herencia en C#. Recuperado de https://codigofuentenet.wordpress.com/2012/07/17/herencia-en-c/
• Walton. (2018). Herencia en Java: Tipos y Ejemplos. Recuperado de https://javadesdecero.es/poo/herencia-java-tipos-ejemplos/