FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.

27
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCI g. Ronald Criollo

Transcript of FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.

Page 1: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.

FUNDAMENTALS OF THE JAVA

PROGRAMMING LANGUAGE(SL-110)CAPÍTULO 12: HERENCIA

Ing. Ronald Criollo

Page 2: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.

Herencia y Programación orientada a objetos.

Lenguaje JAVA soporta herencia Modificadores de Acceso y Herencia Sobreescritura Uso de THIS y SUPER Herencia y Constructores. Extendiendo las Clases.

Page 3: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.

Objetos son creados para modelar COSAS.

Las COSAS podrían ser diferentes, pero tienen muchos atributos en común

Podemos crear un objeto que modele los atributos en común

Page 4: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.
Page 5: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.

Una SUPERCLASE puede ser usada para modelar los atributos comunes o comportamiento.

A veces, la SUPERCLASE no puede ser un Objeto en si.

La SUPERCLASE puede definir el comportamiento que las SUBCLASES deben implementar

Page 6: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.
Page 7: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.
Page 8: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.
Page 9: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.

Algunos lenguajes permiten que una clase pueda tener mutiples SUPERCLASES.

Herencia provee la relacion “ES UN”. Multiple Herencia crea conflictos con los

atributos y comportamientos

Page 10: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.

extends: Declara que la actual clase es una SUBCLASE de otra.

super: usada por la SUBCLASE para acceder a los atributos o metodos de la SUPERCLASE.

protected: es un modificador de acceso que restringe el acceso a las SUBCLASES.

abstract: declara que una clase es una INTERFACE

implements: permite a una clase tomar las propiedades de una INTERFACE

Page 11: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.

La subclase hereda todos los atributos y comportamientos de la SUPERCLASE excepto los declarados como privado.

Page 12: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.
Page 13: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.

SUBCLASE podria necesitar personalizar el comportamiento de las SUPERCLASES.

La SUBCLASE define un metodo que ya existe en la SUPERCLASE.

Cuando este metodo es llamado, es usado el que es definido en la SUBCLASE.

El metodo de la SUPERCLASE es accesible desde la SUBCLASE usando la palabra clave SUPER .

Page 14: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.
Page 15: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.

Sobreescritura es cuando un metodo en la SUBCLASE es diseñado para reemplazar un metodo del mismo nombre en la SUPERCLASE.

Sobrecarga es tener varios metodos con el mismo nombre en la misma clase con distinta definición.

Sobreescritura permite personalizar el comportamiento.

Sobrecarga crea varias formas de hacer la misma cosa.

Page 16: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.

Contructores pueden ser sobrecargados. Cuando una SUBCLASE es construida, el

constructor de la SUPERCLASE tambien es llamado.

El constructor de la SUBCLASE puede llamar explicitamente al constructor de la SUPERCLASE usando la palabra clave SUPER.

Si no hay un constructor correspondiente en la SUPERCLASE, la compilación FALLA.

Page 17: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.

Sintaxis[class_modifier] class class_identifier extends

superclass_identifier

Ejemplo

Page 18: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.
Page 19: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.

Sintaxisimport package_name.class_name;import package_name.*

Ejemplo

Page 20: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.

Sintaxispackage_name.class_name

Ejemplo

Page 21: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.

POLI = Multiple. MORFISMO = Formas.

Implica que un mismo Objeto puede tomar diversas formas.

Figura a = new Circulo(); Figura b = new Triangulo();

Page 22: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.

Son SUPERCLASES que modelan de una forma mas generalizada los atributos y comportamientos.

Las clases ABSTRACTAS definen metodos que no tienen cuerpo pero que deben ser sobreescritos.

Las clases ABSTRACTAS no saben como es el comportamiento general de las SUBCLASES, por eso fuerzan a crear en las SUBCLASES un comportamiento con este nombre.

Page 23: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.

Java impide el uso de Herencia Multiple. Sin embargo, una clase puede heredar

atributos (STATIC y FINAL) y comportamientos de multiples fuentes usando INTERFACES.

Las INTERFACES son como una plantilla para el comportamiento pero no la definen, es por eso que fuerzan a que las SUBCLASES las definan

Page 24: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.
Page 25: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.
Page 26: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.

En una clase, al definir Animal tendríamos que implementar los métodos dibuja() e imprime(). Las clases hijas no tendrían por qué implementar los métodos, a no ser que quieran adaptarlos a sus propias necesidades.

En una clase abstracta podríamos implementar los métodos que nos interese, dejando sin implementar los demás (dejándolos como métodos abstractos). Dichos métodos tendrían que implementarse en las clases hijas.

En un interfaz no podemos implementar ningún método en la clase padre, y cada clase hija tiene que hacer sus propias implementaciones de los métodos. Además, las clases hija podrían implementar otros interfaces.

Page 27: FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 12: HERENCIA Ing. Ronald Criollo.

Una clase FINAL se declara como la clase que termina una cadena de herencia.

No se puede heredar de una clase final. Por ejemplo, la clase Math es una clase final.

Se usa la palabra clave FINAL para declarar un atributo INMUTABLE (CONSTANTE).

Tambien se usa la palabra clave FINAL para impedir que un metodo sea sobreescrito en una SUBCLASE.