Abstract classes:
Poseen métodos concretos y abstractos
Poseen variables
Polimorfismo
Abstract methods: Deben ser implementados por la primer clase concreta. Los implementados desde una interface no necesitan se declarados.
No pueden ser static (tampoco los métodos)
Member access:
public
protected (package access + subclases) → una sola generación
default
private
Comparación de modificadores en variables vs. métodos:
local variables (stack)
final
non-local variables (heap)
final
public
protected
private
static
transient
volatile
methods
final
public
protected
private
static
abstract
synchronized
strictfp
Instance variables:
final: El valor deberá ser asignado por el constructor o al declararla.
Static methods & variables: Desde un método a variable estática no es posible acceder a métodos o variables de instancias.
No pueden ser overridden
Acceso por nombre de clase o nombre de referencia
Declaration rules:
1 public class por archivo .java
Interface:
interface extends [otra interface]
métodos: public abstract (nunca static)
variables: son siempre constantes: static final
interface extends [múltiple interfaces]
abstract class implements [una interface], [otra interface]
Una clase concreta debe implementar todas las interfaces
Ejemplo:
interface Runnable {
public void run(); // la implementación debe ser public
}
//Excepciones definidas para métodos de interfaces no son obligatorios de implementar
Referencias:
Sun Certified Programmer for Java 6 Study Guide. Sierra, Bathes. McGraw-Hill. 2008