HERENCIA HERENCIA • • • • • ¿Qué es? Tipos de herencia. Sobrescribir. This Super 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .2 HERENCIA ¿Qué es? • Se trata de crear una clase hija (subclase), que hereda de la clase padre (superclase) todos sus atributos, constructores, getters, setters y métodos que pueden ser modificados. Aunque puede tener esta sus propios atributos y métodos. • Estos nos permite la reusabilidad del código. • Se implementa mediante: extends 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .3 HERENCIA Tipos • Existen dos tipos de herencias: – Simple – Múltiple, java no las soporta. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .4 HERENCIA SOBRESCRIBIR • Para que un método realice lo que nosotros queramos se debe SOBRESCRIBIRLO. • Solo debemos volver a definir el método en la clase hija con el mismo nombre y parámetros. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .5 HERENCIA this • Es una variable especial de sólo lectura que proporciona Java. • Contiene una referencia al objeto en el que se usa dicha variable. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .6 HERENCIA this • A veces es útil que un objeto pueda referenciarse a si mismo, vemos un ejemplo: class Cliente{ public Cliente(String n){ //Llamamos al otro constructor. El empleo de this ha de ser //siempre en la primera línea dentro del constructor. this(n, Cuenta.nuevo_numero()); ..... } public Cliente (String n, int a){ nombre = n; numero_cuenta = a; } 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .7 HERENCIA this • Otro posible uso de this, es diferenciar entre variables locales de un método o constructor y variables del objeto. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .8 HERENCIA Super • Del mismo modo que this apunta al objeto actual tenemos otra variable super que apunta a la clase padre de la cual se deriva nuestra clase hija. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .9 HERENCIA Super • Un ejemplo: class Gato { void hablar(){ System.out.println("Miau"); } }///~ class GatoMagico extends Gato { boolean gente_presente; void hablar(){ if(gente_presente) //Invoca al método sobreescrito de la clase padre super.hablar(); else System.out.println("Hola"); } } ///:~ 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .10 HERENCIA Desarrollar una clase llamada CuentaCorriente que: • Tenga tres atributos private de tipo Titular (Nombre – String, Apellidos –String y Edad – int), de tipo String (el número de cuenta) y de tipo double(el saldo). • Tenga un constructor con parámetros de tipo Titular, String y double. • Tenga un constructor con parámetros de tipo Titular y String. El saldo seinicializará a 15,3. • Tenga un getter para cada uno de los atributos. • Tenga un setter solo para el saldo. • Tenga un método ingresar que incremente el saldo en una cantidad. • Tenga un método reintegro que decremente el saldo en una cantidad. •Tenga un método para que al imprimir la cuenta salga por pantalla el número de cuenta y su saldo. • Tenga un método para comparar cuentas, sabiendo que dos cuentas serán iguales si sus números de cuenta son iguales. Nota 1: Al imprimir por pantalla un Titular saldrá su nombre, apellidos y edad. Nota 2: Para comparar dos String utilizar su método compareTo(String) que devuelve 0 si son iguales. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .11 Desarrollar una clase llamada CuentaAhorro que: • Es una especialización de CuentaCorriente. • Tiene un atributo mas de tipo double (el interés). • Tiene un constructor con parámetros de tipo Titular, String, double y double. • Tiene un constructor con parámetros de tipo Titular, String y double. El saldo se inicializará a 15,3. • Tiene un constructor con parámetros de tipo Titular y String. El saldo se inicializará a 15,3 y el interés a 2,5. • Tiene un getter para cada uno de los atributos. • Tiene un método calcularInteres que incremente el saldo según el interés. Desarrollar la clase Practica6 que en su método main cree varias cuentas de distinto tipo y trabaje con ellas. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .12 Diagrama de Clases (UML): 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .13