La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Herencia Implementación en Java.

Presentaciones similares


Presentación del tema: "Herencia Implementación en Java."— Transcripción de la presentación:

1 Herencia Implementación en Java

2 Herencia Concepto de Herencia Es el mecanismo que permite definir nuevas clases partiendo de otras ya existentes. Las clases que derivan de otras heredan automáticamente todo su comportamiento, pero además pueden introducir características particulares propias que las diferencian.

3 Herencia Las clases modelan el hecho de que el mundo real contiene objetos con propiedades y comportamientos. La herencia modela el hecho de que estos objetos tienden a organizarse en jerarquías. A esta jerarquía se le denomina relación de generalización y en POO se conoce como herencia.

4 Herencia Cada clase derivada (o clase hija) hereda las características de la clase base (o clase padre) y además cada clase derivada añade sus propias características (atributos y operaciones). Las clases base pueden a su vez ser también subclases o clases derivadas de otras superclases o clases base.

5 ANIMAL Características: Comportamiento:

6 PERRO Características: Comportamiento:

7 GATO Características: Comportamiento:

8 Herencia En Java se puede construir una clase a partir de otra mediante el mecanismo de herencia. Para indicar que una clase deriva de otra se utiliza la palabra extends. public class SubClase extends SuperClase

9 Herencia Cuando una clase deriva de otra, hereda todas sus variables y métodos. Estas funciones y variables miembro pueden ser redefinidas (override, overwrite) en la clase derivada, que puede también definir o añadir nuevas variables y métodos. Java permite múltiples niveles de herencia, pero no permite que una clase derive de varias (no es posible la herencia múltiple). Se pueden crear tantas clases derivadas de una misma clase como se quiera.

10 Herencia Todas las clases de Java creadas por el programador tienen una super-clase. Cuando no se indica explícitamente una super-clase con la palabra extends, la clase deriva de java.lang.Object, que es la clase raíz de toda la jerarquía de clases de Java. Como consecuencia, todas las clases tienen algunos métodos que han heredado de Object. La clase Object tiene métodos interesantes para cualquier objeto que son heredados por cualquier clase. Por ejemplo, toString…

11 Sobrescritura (override)
Herencia Sobrescritura (override) Cuando una clase B hereda de otra A, la clase B puede acceder a todos los atributos y métodos visibles de la clase A. Sin embargo, ¿qué pasa cuando el comportamiento de un método no es el adecuado o es parcialmente adecuado? La sobrescritura se refiere a la habilidad de redefinir el comportamiento de un método específico en una subclase, generando así un comportamiento acorde a las necesidades de cada clase.

12 Herencia Un método sobrescrito en una clase derivada debe seguir las siguientes reglas: Debe tener el mismo nombre. Debe tener el mismo tipo y número de parámetros. Los métodos redefinidos pueden ampliar los derechos de acceso de la superclase, pero nunca restringirlos. El valor de retorno debe ser del mismo tipo o un subtipo.

13 Herencia Una clase puede redefinir (volver a definir) cualquiera de los métodos heredados de su superclase que no sean final. El nuevo método sustituye al heredado para todos los efectos en la clase que lo ha redefinido. Las métodos de la superclase que han sido redefinidos pueden ser todavía accedidos por medio de la palabra super desde los métodos de la clase derivada, aunque con este sistema sólo se puede subir un nivel en la jerarquía de clases. Los métodos de clase o static no pueden ser redefinidos en las clases derivadas.

14 Herencia

15 Herencia

16 Herencia Sobrecarga vs sobrescritura Una de las cosas que más confunden a los programadores novatos son las diferencias entre los conceptos de sobrecarga y sobrescritura. La sobrescritura es un concepto que tiene sentido en la herencia y se refiere al hecho de volver a definir un método heredado. La sobrecarga sólo tiene sentido en la clase misma, se pueden definir varios métodos con el mismo nombre, pero con diferentes tipos y número de parámetros en ella.

17 Herencia Constructores El constructor de una clase puede llamar a otro constructor previamente definido en la misma clase por medio de la sentencia this( ). En este contexto, la palabra this sólo puede aparecer en la primera sentencia de un constructor. De forma análoga el constructor de una clase derivada puede llamar al constructor de su superclase por medio de la sentencia super( ), seguida entre paréntesis de los argumentos apropiados para uno de los constructores de la superclase. De esta forma, un constructor sólo tiene que inicializar directamente las variables no heredadas.

18 Herencia La llamada al constructor de la superclase debe ser la primera sentencia del constructor, excepto si se llama a otro constructor de la misma clase con this( ). Si el programador no la incluye, Java incluye automáticamente una llamada al constructor por defecto de la superclase, super( ). Si el programador no prepara un constructor por defecto, el compilador crea uno, inicializando las variables de los tipos primitivos a sus valores por defecto, y los Strings y demás referencias a objetos a null. Antes, incluirá una llamada al constructor de la superclase.

19 Herencia

20 Herencia

21 Herencia Clases y métodos finales
Las variables declaradas como final no pueden cambiar su valor una vez que han sido inicializadas. Sin embargo, existen otros usos de la palabra final. Una clase declarada final no puede tener clases derivadas. Esto se puede hacer por motivos de seguridad y también por motivos de eficiencia, porque cuando el compilador sabe que los métodos no van a ser redefinidos puede hacer optimizaciones adicionales. Análogamente, un método declarado como final no puede ser redefinido por una clase que derive de su propia clase.

22 Clases abstractas e interfaces

23 Interfaces Clases y métodos abstractos Una clase abstracta (abstract) es una clase de la que no se pueden crear objetos. Su utilidad es permitir que otras clases deriven de ella, proporcionándoles un marco o modelo que deben seguir y algunos métodos de utilidad general. Las clases abstractas se declaran anteponiéndoles la palabra abstract public abstract class MiClaseAbstracta

24 Interfaces Una clase abstract puede tener métodos declarados como abstract, en cuyo caso no se da definición del método. Si una clase tiene algún método abstract es obligatorio que toda la clase sea abstract. En cualquier subclase este método deberá bien ser redefinido, o bien volver a declararse como abstract (el método y la subclase). Una clase abstract puede tener métodos que no son abstract.

25 Interfaces Aunque no se puedan crear objetos de esta clase, sus subclases heredarán el método completamente a punto para ser utilizado. Como los métodos static no pueden ser redefinidos, un método abstract no puede ser static.

26 Interfaces Interfaces Las interfaces (interface) son la “generalización” de las clases abstractas. Todas las clases que implementan una determinada interfaz están obligadas a proporcionar una definición de los métodos de la interfaz, y en ese sentido adquieren una conducta o modo de funcionamiento. En las interfaces no se implementa el comportamiento, únicamente se especifica cual va a ser, es decir, se declaran los métodos pero no se implementan. Una interfaz es un contrato sobre qué puede hacer la clase, sin decir cómo lo va a hacer. Debido a que es una clase 100% abstracta, no es posible crear instancias de una interfaz.

27 Interfaces Una clase puede implementar una o varias interfaces. Para indicar que una clase implementa una o más interfaces se ponen los nombres de las interfaces, separados por comas, detrás de la palabra implements, que a su vez va siempre a la derecha del nombre de la clase o del nombre de la superclase en el caso de herencia. public class MiClase implements MiInterfaz O bien: public class MiClase extends MiPadre implements MiInterfaz1, MiInterfaz2 Todos los métodos de una interfaz son públicos y abstractos. Pueden contener constantes que serán implícitamente publicas y estáticas (No es necesario poner public, static, o final).

28 Interfaces Geometría Plana…

29 Programación Orientada a Objetos

30 Programación Orientada a Objetos

31 Programación Orientada a Objetos

32 Programación en Java Ejercicio
Hacer una clase Triangulo que implemente la interfaz FiguraGeometrica (suponiendo que es equilátero)

33 Polimorfismo Implementación múltiple Una clase puede implementar cualquier cantidad de interfaces, la única restricción es que, dentro del cuerpo de la clase implementadora se deben implementar todos los métodos de las interfaces que se implementen. La sintaxis es la siguiente la siguiente: public class NombreClase implements Interfaz1, Interfaz2, …, InterfazN { // Implementar métodos de la Interfaz1 // Implementar métodos de la interfaz 2 // … // Implementar métodos de la interfaz N } El orden de la implementación de las interfaces y el orden en el que se implementan los métodos de las interfaces dentro de la clase no es importante.

34 Polimorfismo Simulando herencia múltiple en clases Para simular la herencia múltiple, Java puede heredar de una clase e implementar N interfaces, con lo cual da el “efecto” de tener herencia multiple La sintaxis es la siguiente la siguiente: public class NombreClase extends ClasePadre implements Interfaz1, Interfaz2, …, InterfazN { // …// Implementar métodos de la interfaz N }

35 Polimorfismo Herencia múltiple en interfaces
Las interfaces pueden heredar de otras interfaces y, a diferencia de las clases, una interfaz puede heredar de una o más interfaces (herencia múltiple), utilizando la siguiente sintaxis: public interface HeredaInterfaz extends Interfaz1, Interfaz2, …, InterfazN { tipoRetorno nombreMetodo([Parametros]); } En este caso, se aplican las mismas reglas que en la herencia, es decir, la interfaz que hereda de otras interfaces posee todos los métodos definidos en ellas. Por otro lado, la clase que implemente esta interfaz (la interfaz que hereda de otras interfaces) debe definir los métodos de todas las interfaces.

36 Polimorfismo

37 Polimorfismo El polimorfismo se refiere a la propiedad por la que es posible enviar mensajes sintácticamente iguales a objetos de tipos distintos.

38 Polimorfismo

39 Polimorfismo Debido a que la única manera de acceder a un objeto es a través de su referencia, existen algunos puntos clave que se deben recordar sobre las mismas: Una referencia puede ser solo de un tipo y, una vez declarado, el tipo no puede ser cambiado. Una referencia es una variable, por lo tanto, ésta puede ser reasignada a otros objetos (a menos que la referencia sea declarada como final). El tipo de una referencia determina los métodos que pueden ser invocados del objeto al que referencia, es decir, solo se pueden ejecutar los métodos definidos en el tipo de la referencia. A una referencia se le puede asignar cualquier objeto que sea del mismo tipo con el que fue declarada la referencia o de algún subtipo.

40 Polimorfismo

41 Polimorfismo

42 Polimorfismo

43 Laboratorio…


Descargar ppt "Herencia Implementación en Java."

Presentaciones similares


Anuncios Google