Sie sind auf Seite 1von 16

Modulo V

Herencia e Interface

La herencia es un mecanismo que permite la definicin de una clase a partir de la definicin de otra ya existente. La herencia permite compartir automticamente mtodos y datos entre clases, subclases y objetos. La herencia esta fuertemente ligada a la reutilizacin del cdigo en la OOP. Hay dos tipos de herencia: Herencia Simple y Herencia Mltiple. Java slo permite herencia simple.

Herencia

Superclase y Subclases
En esta estructura jerrquica, cada clase tiene solo una clase padre. La clase padre de cualquier clase es conocida como su superclase. La clase hija de una superclase es llamada una subclase. * Una superclase puede tener cualquier nmero de subclases. * Una subclase puede tener solo una superclase.

Herencia

A es la superclase de B, C y D. D es la superclase de E. B, C y D son subclases de A. E es una subclase de D.

Herencia

Solo se pueden heredar Mtodos y Variables Los constructores no son heredados por la subclase. Esta ligado fuertemente a la reutilizacin de Cdigo OOP. En java solo se puede heredar una clase

Caractersticas de herencia

Para crear una subclase, se incluye la palabra clave extends en la declaracin de la clase.

class nombreSubclase extends nombreSuperclase{ } En Java, la clase padre de todas las clases es la clase

Object

y cuando una clase no tiene una superclase explcita, su superclase es Object.

Heredando clases en Java

Primer ejemplo:
Es un programa que permite expandir el modo de mostrar su funcin a travs de la clase humano, la cual es heredada a la clase ciudadano.

Herencia

Una interface es una variante de una clase abstracta con la condicin de que todos sus mtodos deben ser abstractos. Si la interface va a tener atributos, stos deben llevar las palabras reservadas static final y con un valor inicial ya que funcionan como constantes por lo que, por convencin, su nombre va en maysculas.

interface Nomina { public static final String EMPRESA = "Patito, S. A."; public void detalleDeEmpleado(Nomina obj); }

Interfaces

Una clase implementa una o ms interfaces (separadas con comas ",") con la palabra reservada implements. Con el uso de interfaces se puede "simular" la herencia mltiple que Java no soporta.

class Empleado implements Nomina { ... }

Interfaces

En este ejemplo, la clase Empleado tiene una clase padre llamada Object (implcitamente) e implementa a la interface Nomina, quedando el diagrama de clases de la siguiente manera: La clase que implementa una interface tiene dos opciones: 1) Implementar todos los mtodos de la interface. 2) Implementar solo algunos de los mtodos de la interface pero esa clase debe ser una clase abstracta (debe declararse con la palabra abstract).

Interfaces

La implementacin de las interfaces deben ser pblicos porque se reducira el acceso al paquete y reduciramos accesibilidad y no lo permite el compilador java La interfaz es una clase completamente abstracta Contiene campos o variables de tipo Static y final Permite el mecanismo de herencia mltiple Toda clase implementada por una interfaz obtienen protocolos

Caractersticas de las interfaces

Cuando queramos crear una clase que se adapte a una o varias interfaces concretas, debemos utilizar la palabra clave implements. Con la interfaz tenemos el aspecto, ahora vamos a decir cmo funciona. La definicin de clase derivada es parecida a la herencia normal. Vamos a verlo con el ejemplo de los instrumentos musicales:

Interfaz

public interface extremos { int min(int [] a); int max(int [] a); double min(double [] a); double max(double [] a); }

Ejemplo de Interfaces

public final class math3 implements extremos { public int min(int [] a){ int menor = a[0]; for(int i=1; i<a.length; i++){ if (menor>a[i]){ menor = a[i]; } } return menor; }

public int max(int [] a){ int mayor = a[0]; for(int i=1; i<a.length; i++){ if (mayor>a[i]){ mayor = a[i]; } } return mayor; }

Continuacin del ejemplo

public double min(double [] a){ double menor = a[0]; for(int i=1; i<a.length; i++){ if (menor>a[i]){ menor = a[i]; } } return menor; }

public double max(double [] a){ double mayor = a[0]; for(int i=1; i<a.length; i++){ if (mayor>a[i]){ mayor = a[i]; } } return mayor; }
}

Continuacin del ejemplo

public static void main(String[] args){ math3 mate = new math3() ; int [] n = new int[12]; for (int i=0; i<n.length; i++) { n[i] = (int) (100*Math.random()+1); System.out.println("n["+i+"] = "+n[i]); } System.out.println("Minimo : " + mate.min(n)); System.out.println("Maximo : " + mate.max(n)); }

Continuacin del ejercicio

Das könnte Ihnen auch gefallen