En orientación a objetos la herencia es, después de la agregación o
composición, el mecanismo más utilizado para alcanzar algunos de los
objetivos más preciados en el desarrollo de software como lo son la
reutilización y la extensibilidad. A través de ella los diseñadores
pueden crear nuevas clases partiendo de una clase o de una jerarquía de
clases preexistente (ya comprobadas y verificadas) evitando con ello el
rediseño, la modificación y verificación de la parte ya implementada. La
herencia facilita la creación de objetos a partir de otros ya
existentes e implica que una subclase obtiene todo el comportamiento
(métodos) y eventualmente los atributos (variables) de su superclase.
Es la relación entre una clase general y otra clase más especifica.
Por ejemplo: Si declaramos una clase párrafo derivada de una clase
texto, todos los métodos y variables asociadas con la clase texto, son
automáticamente heredados por la subclase párrafo.
La herencia es uno de los mecanismos de los lenguajes de programación orientada a objetos basados en clases, por medio del cual una clase se deriva de otra de manera que extiende su funcionalidad. La clase de la que se hereda se suele denominar clase base, clase padre, superclase, clase ancestro (el vocabulario que se utiliza suele depender en gran medida del lenguaje de programación).
En los lenguajes que cuentan con un sistema de tipos
fuerte y estrictamente restrictivo con el tipo de datos de las
variables, la herencia suele ser un requisito fundamental para poder
emplear el Polimorfismo,
al igual que un mecanismo que permita decidir en tiempo de ejecución
qué método debe invocarse en respuesta a la recepción de un mensaje,
conocido como enlace tardío (late binding) o enlace dinámico (dynamic binding).
Ejemplo en Java.
public class Mamifero{ private int patas; private String nombre; public void imprimirPatas(){ JOptionPane.showMessageDialog(null," Tiene " + patas + " patas\n","Mamifero", JOptionPane.INFORMATION_MESSAGE); } public Mamifero(String nombre, int patas){ this.nombre = nombre; this.patas = patas; } } public class Perro extends Mamifero { public Perro(String nombre){ super(nombre, 4); } } public class Gato extends Mamifero { public Gato(String nombre){ super(nombre, 4); } } public class CrearPerro { public static void main(String [] args) { Perro perrito = new Perro("Pantaleon"); perrito.imprimirPatas(); /*Está en la clase mamífero*/ } }
No hay comentarios:
Publicar un comentario