Palabras reservadas en Java |
abstract | boolean | break | byte | case | catch |
char | class | const* | continue | default | do |
double | else | extends | final | finally | float |
for | goto* | if | implements | import | instanceof |
int | interface | long | native | new | package |
private | protected | public | return | short | static |
strictfp** | super | switch | synchronized | this | throw |
throws | transient | try | void | volatile | while |
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
}
|
|