G.Bordel >Docencia >TAP Técnicas Actuales de Programación (curso 2010-2011)
desprotegido Intro. desprotegido Temario desprotegido Calendario desprotegido RPF desprotegido Recursos protegido Práctica protegido Gest. Alum.
tema_anterior Tema 4: Elementos relacionados con la orientación a objeto tema_siguiente
  1. Objetos y clases.
  2. Estructura de la definición de una clase.
  3. Herencia.
  4. Encapsulamiento (ámbitos de accesibilidad).
  5. El bloque static y los atributos static y final.
  6. Instanciación, inicialización y eliminación de objetos.[ejercicios]
  7. Clases y métodos abstractos.[ejercicios]
  8. Interfaces.[ejercicios]
  9. Polimorfismo.
  10. Arrays*.[ejercicios]
  11. Enumeraciones.

4.7- Clases y métodos abstractos

Palabras reservadas en Java
abstractbooleanbreakbytecasecatch
charclassconst*continuedefaultdo
doubleelseextendsfinalfinallyfloat
forgoto*ifimplementsimportinstanceof
intinterfacelongnativenewpackage
privateprotectedpublicreturnshortstatic
strictfp**superswitchsynchronizedthisthrow
throwstransienttryvoidvolatilewhile

Cuando hablamos de herencia vimos como es posible sobreescribir métodos de modo que para una subclase un comportamiento difiriese del de su clase padre. En muchas ocasiones es razonable plantear un método en una clase "A" con el objeto de que siempre sea sobreescrito por toda subclase, de manera que cada una tenga su comportamiento específico. Si a esto añadimos el hecho de que el conjunto de las subclases de "A" cubran toda la variedad posible de objetos de tipo "A" y que nunca se instancie un objeto de clase "A" sino siempre de alguna de sus subclases, deja de tener sentido la definición del metodo en la clase padre. Podriamos optar por no incluirlo y que cada subclase añada esa característica al conjunto de su herencia. No obstante si todas las subclases añadirán la característica (cada una a su manera) es un hecho que la característica en sí es común a todas y por tanto puede figurar como un elemento a heredar (no así su implementación concreta). Esto se consigue declarando el método en la clase padre y dejandolo sin definición, es decir sin el bloque de sentencias ya que este será aportado por cada subclase. El hecho de declarar el método "obliga" a las subclases a implementar el método. Para realizar esta declaración sin bloque de definción y que sea aceptada por el compilador es preciso utilizar el atributo "abstract" (p.ej. public abstract int reintegro();)

El hecho de que exista en una clase uno o varios métodos abstractos supone que su definición está incompleta y por tanto sólo tiene utilidad como clase padre de otras que definan totalmente sus elementos. Para indicar que esta circunstancia es "voluntaria" por parte del programador, debe incluirse el término "abstract" también en la declaración de la clase (p.ej. public abstract class CuentaBancaria {...}).


 1-
 2-
 3-
 4-


public abstract class CuentaBancaria {
	public abstract void reintegro(int cantidad);
	// resto de la definición de la clase
}


 1-
 2-
 3-
 4-
 5-
 6-


public class CuentaCorriente extends CuentaBancaria {
	public void reintegro(int cantidad) {
		//definición del método reintegro
	}
	// resto de la definición de la clase
}

Siguiente punto: 4.8- Interfaces


Plataforma de soporte a curso y contenidos (c) German Bordel 2005.