Sistemas

Solo disponible en BuenasTareas
  • Páginas : 10 (2401 palabras )
  • Descarga(s) : 0
  • Publicado : 22 de noviembre de 2010
Leer documento completo
Vista previa del texto
168

 A. García-Beltrán y J.M. Arranz

16. Herencia
Objetivos: a) Definir el concepto de herencia entre clases b) Interpretar el código fuente de una aplicación Java donde aparecen clases relacionadas mediante la herencia c) Construir una aplicación Java sencilla, convenientemente especificada, que haga uso de la herencia entre clases

16.1. Definición de herencia
La herencia es unapropiedad que permite la declaración de nuevas clases a partir de otras ya existentes. Esto proporciona una de las ventajas principales de la Programación Orientada a Objetos: la reutilización de código previamente desarrollado ya que permite a una clase más específica incorporar la estructura y comportamiento de una clase más general. Cuando una clase B se construye a partir de otra A mediante laherencia, la clase B hereda todos los atributos, métodos y clases internas de la clase A. Además la clase B puede redefinir los componentes heredados y añadir atributos, métodos y clases internas específicas. Para indicar que la clase B (clase descendiente, derivada, hija o subclase) hereda de la clase A (clase ascendiente, heredada, padre, base o superclase) se emplea la palabra reservada extends enla cabecera de la declaración de la clase descendiente. La sintaxis es la siguiente:
public class ClaseB extends ClaseA { // Declaracion de atributos y metodos especificos de ClaseB // y/o redeclaracion de componentes heredados }

Por ejemplo, a partir de la clase Precio:
/** * Ejemplo de declaracion de la clase Precio * A. Garcia-Beltran - noviembre, 2005 */ public class Precio { // Variablede instancia public double euros; // Metodos publicos public double da() { return euros; } public void pone(double x) { euros=x; } }

se construye la clase Producto como descendiente de la clase Precio de la siguiente forma:
/** * Ejemplo de declaracion de la clase Producto * clase producto desciende de Precio

 Programación orientada a objetos con Java

169

* A. Garcia-Beltran -diciembre, 2005 */ public class Producto extends Precio { // Variable de instancia public int codigo; // Metodos publicos public int daCodigo() { return codigo; } public void asignaCodigo(int x) { codigo=x; } public void asignaProducto(int cod, double p) { asignaCodigo(cod); pone(p); } public String toString() { return "Codigo: " + codigo + " ; precio: " + euros + " euros"; } }

La clasePruebaClaseProducto trabaja con dos instancias de la clase Producto:
/** * Demostracion de la clase Producto * A. Garcia-Beltran - diciembre, 2005 */ public class PruebaClaseProducto { public static void main (String [] args){ Producto p = new Producto(); p.asignaProducto(200201,15.8); System.out.println(p.toString()); Producto q = new Producto(); q.asignaCodigo(200202); q.pone(34.3);System.out.println(q.toString()); } }

Durante la ejecución del código anterior, se generan las instancias (Figura 16.1), referenciadas por p y q, cada una de las cuales está compuesta por dos atributos: euros, variable de instancia heredada de la clase Precio y codigo, variable de instancia específica de la clase Producto.

Figura 16.1. Representación grafica de las instancias de la clase Producto.

Por otrolado, la ejecución de PruebaClaseProducto produce la siguiente salida por pantalla:

170

 A. García-Beltrán y J.M. Arranz

$>javac PruebaClaseProducto.java $>java PruebaClaseProducto Codigo: 200201 ; precio: 15.8 euros Codigo: 200202 ; precio: 34.3 euros

16.2. Jerarquía de clases
Java permite múltiples niveles de herencia pero no la herencia multiple, es decir una clase sólo puedeheredar directamente de una clase ascendiente. Por otro lado, una clase puede ser ascendiente de tantas clases descendiente como se desee (un unico padre, multitud de hijos). En la Figura 16.2 se muestra gráficamente un ejemplo de jerarquía entre diferentes clases relacionadas mediante la herencia.

Figura 16.2. Representación de una jerarquía de clases relacionadas mediante la herencia

16.3....
tracking img