Mama
17/10/2011
Herencia
Programación Orientada a Objetos
Ángel García y Beltrán Unidad docente de Informática Industrial ETSII – UPM 17 de Octubre de 2011
Índice
• Herencia
– – – – Definición y declaración Modificadores de acceso Jerarquía de clases. La clase Object
• Clases finales • Métodos finales • Clases y métodos abstractos
– Definición ydeclaración – Ejemplos
17/10/2011
agarcia@etsii.upm.es
1
Programación Orientada a Objetos
17/10/2011
Herencia
• Permite la declaración de nuevas clases (descendientes) a partir de otras ya existentes descendientes) (ascendientes) ascendientes) • La clase descendiente hereda los atributos y métodos de la ascendiente • La clase descendiente puede añadir nuevos atributos y métodos yredefinir los heredados (sobre-escritura) (sobre-escritura) • Sintaxis:
modificadorAcceso class ClaseB extends ClaseA { // Declaracion de atributos y metodos // especificos de la ClaseB // y/o redeclaracion de componentes heredados }
17/10/2011
Ejemplo de herencia
public class Precio { // ** Atributos ** private double euros; euros; // ** Metodos ** public double da() { da() return euros;euros; } public void pone(double x) { pone( euros=x; euros=x; } } public class Producto extends Precio { // ** Atributos ** private int codigo; codigo; // ** Metodos ** public int daCodigo() { daCodigo() return codigo; codigo; } public void asignaCodigo(int x) { asignaCodigo( codigo=x; codigo=x; } public void asignaProducto(int cod, asignaProducto( cod, double p) { asignaCodigo(cod) asignaCodigo(cod);i C di d); pone(p); } public String toString() { toString() return "Codigo: " + codigo + Codigo: " ; precio: " + euros + " euros"; } }
Precio.java Precio java
17/10/2011
Producto.java
agarcia@etsii.upm.es
2
Programación Orientada a Objetos
17/10/2011
Ejemplo de uso de clase descendiente
/** * Demostracion de la clase Producto * A. Garcia-Beltran Garcia*/ / public classPruebaProducto { public static void main (String [] args){ args){ Producto p = new Producto(); Producto(); p.asignaProducto(200401,15.8); asignaProducto(200401,15. System.out.println( toString()); System.out.println(p.toString()); Producto q = new Producto(); Producto(); q.asignaCodigo(200402); asignaCodigo(200402) q.pone(34.3); pone(34. System.out.println( toString());System.out.println(q.toString()); } }
17/10/2011
Ejercicio propuesto (1) (1
• Construir la clase Producto descendiente de la clase Precio. Precio.
– Editar y compilar
• Construir la clase PruebaProducto para que verifique el uso de los atributos y métodos de la clase Producto. Producto.
– Editar, compilar y ejecutar
17/10/2011
agarcia@etsii.upm.es
3
Programación Orientada a Objetos
17/10/2011Modificadores de acceso
• Tanto para atributos como para métodos de clases que puedan ser ascendientes
• El modificador protected permite el acceso al miembro correspondiente a las clases derivadas y lo prohibe al resto
17/10/2011
Normas de la herencia en Java
• La subclase hereda todos los miembros (atributos y métodos) métodos) de su superclase. superclase. • Puede usarlos tal cual,reemplazarlos, esconderlos o cual, reemplazarlos, ampliarlos con nuevos miembros: miembros:
1. Atributos heredados (public o protected) se usan directamente 2. Estos atributos se pueden redefinir pero no es recomendable 3. Nuevos atributos que no estén en la superclase pueden declararse 4. Métodos heredados (public o protected) se usan directamente 5. Métodos de instancia pueden redefinirse(sobreescribiéndolos) sobreescribiéndolos) 6. En la declaración d métodos d clase se puede utilizar l 6 E l d l ió de ét d de l d tili la misma cabecera que la de la superclase (ocultándolos) ocultándolos) 7. Nuevos métodos que no estén en la superclase pueden declararse 8. El constructor de la subclase puede llamar al de la superclase de forma implícita o con super
17/10/2011
agarcia@etsii.upm.es
4...
Regístrate para leer el documento completo.