herencia en POO

14
1 Herencia TEMA 5 Manuel Pereira González V1.3 Agenda Introducción Clases Derivadas Implementación Constructores Sobreescritura de Métodos Métodos Heredados vs Sobreescritos Métodos static y final Polimorfismo Métodos y clases abstractas Restricciones de Acceso La Clase Object Resumen

description

Herencia en POO

Transcript of herencia en POO

Page 1: herencia en POO

1

Herencia

TEMA 5

Manuel Pereira GonzálezV1.3

Agenda

IntroducciónClases Derivadas

ImplementaciónConstructores

Sobreescritura de MétodosMétodos Heredados vs SobreescritosMétodos static y finalPolimorfismo

Métodos y clases abstractasRestricciones de AccesoLa Clase ObjectResumen

Page 2: herencia en POO

2

Introducción

HerenciaUna clase (subclase ó clase hija) hereda la estructura de otra (superclase o clase padre), y concretiza ciertos aspectos de ésta.La clase hija comprende un subconjunto de los objetos de la clase padre.Ej:

Clase: AnimalSer vivo que nace, crece, se reproduce y muere

Subclase: Perro (subconjunto de animales)Ser vivo que nace, crece, se reproduce, muere, tiene cuatro patas, dos ojos, ladra, …

Introducción

Relación de Generalización / EspecializaciónJerarquía definida a través de la Herencia:

Un CANICHE es un PERRO Una PERRO es un ANIMALUn ANIMAL es un SER VIVO

SER VIVO

ANIMAL VEGETAL

PERROELEFANTE JIRAFA

CANICHE PEQUINÉS …

Page 3: herencia en POO

3

Introducción

Ventaja fundamental: Reutilización/Centralización de Código. No es necesario volver a escribir los atributos y métodos de la clase padre en la clase hija.

No duplicidad del códigoDisminuye volumen de códigoFacilita el mantenimientoPermite el polimorfismo: Tratar con objetos de una clase general sin saber la subclase concreta a la que pertenecen

Agenda

IntroducciónClases Derivadas

ImplementaciónConstructores

Sobreescritura de MétodosMétodos Heredados vs SobreescritosMétodos static y finalPolimorfismo

Métodos y clases abstractasRestricciones de AccesoLa Clase ObjectResumen

Page 4: herencia en POO

4

Clases Derivadas: Implementación

En java para que una clase herede de otra se utiliza la palabra clave extends

Clases Derivadas: Implementación

Una clase derivada hereda las variables y métodos de la clase padre, además de añadir sus variables y métodos propios

Page 5: herencia en POO

5

Clases Derivadas: Constructores

Por defecto desde un constructor de una clase hija se llama al constructor sin argumentos de la clase padre

Clases Derivadas: Constructores

Por defecto desde un constructor de una clase hija se llama al constructor sin argumentos de la clase padreSi se desea llamar a otro constructor de la clase padre se utiliza la palabra clave superPara mantener el encapsulamiento, una clase derivada debe inicializar sus variables específicas en el constructor, y dejar al constructor del padre inicializar las suyas.

Page 6: herencia en POO

6

Clases Derivadas: Constructores

Agenda

IntroducciónClases Derivadas

ImplementaciónConstructores

Sobreescritura de MétodosMétodos Heredados vs SobreescritosMétodos static y finalPolimorfismo

Métodos y clases abstractasRestricciones de AccesoLa Clase ObjectResumen

Page 7: herencia en POO

7

Sobreescritura de métodos: Métodosheredados vs Sobreescritos

Una clase hija puede sobreescribir un método de la clase padre para modificar su implementación

Sobreescritura de Métodos: Métodos static y final

No se pueden sobreescribir los métodos de clase (static).Si se declara un método de tipo final, no puede ser sobreescrito por clases derivadas

Page 8: herencia en POO

8

Sobreescritura de Métodos: Polimorfismo

PolimorfismoTratar objeto de una clase más general independientemente de que sea de una clase concretaEj: Si tengo un perro, un elefante y una jirafa, puedo tratarlos a todos como animalesEj: Polígono -> Método para calcular el perímetro

Círculo: 2 * PI * RRectángulo: Base * AlturaTriángulo: Base * Altura / 2

Lista de polígonos, cada uno sabe calcular su área pero se tratan de igual manera sin saber de qué tipo de polígono concreto se trata

Sobreescritura de Métodos: Polimorfismo

Page 9: herencia en POO

9

Agenda

IntroducciónClases Derivadas

ImplementaciónConstructores

Sobreescritura de MétodosMétodos Heredados vs SobreescritosMétodos static y finalPolimorfismo

Métodos y clases abstractasRestricciones de AccesoLa Clase ObjectResumen

Métodos y Clases Abstractas

Un método abstracto (abstract) de una superclase no tiene implementación, debe ser implementado por las clases derivadasPara poder definir un método abstracto, es necesario que la clase sea declarada abstractaUna clase abstracta puede tener métodos abstractos y métodos que no lo sonNo se puede instanciar una clase abstracta (no se pueden crear objetos de esa clase)

Page 10: herencia en POO

10

Métodos y Clases Abstractas

Agenda

IntroducciónClases Derivadas

ImplementaciónConstructores

Sobreescritura de MétodosMétodos Heredados vs SobreescritosMétodos static y finalPolimorfismo

Métodos y clases abstractasRestricciones de AccesoLa Clase ObjectResumen

Page 11: herencia en POO

11

Restricciones de Acceso

Cuatro posibles visibilidades de atributos y métodos: public, private, protected y package (por defecto, no se pone nada).

NONOSISISubclase en otro paquete

NOSISISISubclase en paquete

NONONOSIOtro paquete

NOSISISIMismo paquete

SISISISIPropia clase

privatenadaprotectedpublicVISIBILIDAD

Restricciones de Acceso

Page 12: herencia en POO

12

Agenda

IntroducciónClases Derivadas

ImplementaciónConstructores

Sobreescritura de MétodosMétodos Heredados vs SobreescritosMétodos static y finalPolimorfismo

Métodos y clases abstractasRestricciones de AccesoLa Clase ObjectResumen

La Clase Object

En Java, todo objeto implícitamente hereda de la clase ObjectLa clase Object tiene ciertos métodos, que las subclases pueden sobreescribir

public String toString()public int hashCode()public boolean equals(Object obj)protected Object clone()

Todo objeto, por tanto, tiene una implementación por defecto de estos métodos

Page 13: herencia en POO

13

Agenda

IntroducciónClases Derivadas

ImplementaciónConstructores

Sobreescritura de MétodosMétodos Heredados vs SobreescritosMétodos static y finalPolimorfismo

Métodos y clases abstractasRestricciones de AccesoLa Clase ObjectResumen

Resumen

IntroducciónSuperclases y SubclasesReutilización / Centralización de código

Clases DerivadasImplementación (extends)Constructores

Sobreescritura de MétodosMétodos Heredados vsSobreescritosMétodos static y final

No se pueden sobreescribirPolimorfismo

Métodos y clases abstractasMétodo abstract: Sin implementación por defSólo métodos abstract en clases abstractClases abstract no instanciables

Restricciones de Accesopublic, protected, nada y private

La clase ObjectMétodo toString()

Page 14: herencia en POO

14

Resumen: Para más información

http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto/II_6.htmhttp://eees.ii.uam.es/alfonso/web_poo_04/teoria/material/subclases_e_interfaces.pdfhttp://www.ii.uam.es/%7Ecastells/docencia/poo/4-jerarquias.pdf