- abstract --> esta clase tiene al menos un método abstracto, no se instancia y se utiliza como clase base para herencia. La clase que deriva de esta tiene que declarar e implementar todos los métodos de la clase abstracta que sean abstracto, sino daria un error de compilación. Lo métodos no pueden ser privados o staticos sino no se pueden acceder a ellos. Ejemplo
abstract class Prueba {
abstract metodo1();
abstract metodo1();
abstract void metodo2();
void metodo3(){ //implementación }
}
public class Prueba2 extends Prueba{
void metodo1(){ //implementación }
void metodo2(){ //implementación }
}
public class Prueba2 extends Prueba{
void metodo1(){ //implementación }
void metodo2(){ //implementación }
}
- synchronizable --> Este modificador especifica que todos los métodos definidos en la clase son sincronizados, es decir, que no se puede acceder al mismo tiempo a ellos desde distintos threads; el sistema se encarga de colocar los flags necesarios para evitarlo. Este mecanismo hace que desde threads diferentes se puedan modificar las mismas variables sin que haya problemas de que se sobreescriban.
- public -->Las clases public son accesibles desde otras clases, bien sea directamente o por herencia. Son accesibles dentro del mismo paquete en el que se han declarado. Para acceder desde otros paquetes, primero tienen que ser importadas.
- final -->esta se declara como la clase que termina una cadena de herencia. No se puede heredar de una clase final. Por ejemplo, la clase Math es una clase final.