Modificadores
Modificadores
Si has leído los otras publicaciones relacionadas con el curso de Java ya estarás mas que familiarizado con public class main palabra clave que aparece en todos mis ejemplos.
La palabra clave public es un modificador de acceso, lo que significa que se utiliza para establecer el nivel de acceso para clases, atributos, métodos y constructores.
Dividiremos los modificadores en dos grupos:
- Modificadores de acceso: Controla en nivel de acceso
- Modificadores sin acceso: No controla el nivel de acceso, pero proporciona otras funciones
Modificadores de acceso
Para las clases, podemos utilizar cualquiera de los dos: public y default
publicLa clase es accesible por cualquier otra clase
1
2
3
4
5
public class main{
public static void main(String[] args){
System.out.println("alejandroalsa.es");
}
}
defaultLa clase sólo es accesible por las clases del mismo paquete. Esta se utiliza cuando no se especifica un modificador. (Mas adelante veremos los paquetes)
1
2
3
4
5
class main{
public static void main(String[] args){
System.out.println("alejandroalsa.es");
}
}
Para atributos, métodos y constructores, podemos usar los siguientes:
publicEl código es accesible por otras clasesprivateEl código solo es accesible dentro de la clase declarada
1
2
3
4
5
6
7
8
9
10
public class main{
private String nombre = "Alejandro";
private String apellidos = "Alfaro Sánchez";
public static void main(String[] args){
main nombreApellidos = new main();
System.out.println(nombreApellidos.nombre + " " + nombreApellidos.apellidos);
}
}
defaultEl codigo solo es accesible en el mismo paquete, se suele utilizar cuando no se especifica un modificador (Más adelante veremos los paquetes)
1
2
3
4
5
6
7
8
9
10
class main{
String nombre = "Alejandro";
String apellidos = "Alfaro Sánchez";
public static void main(String[] args){
main nombreApellidos = new main();
System.out.println(nombreApellidos.nombre + " " + nombreApellidos.apellidos);
}
}
protectedEl código solo es accesible en el mismo paquete y subclases. (Más adelante veremos las subclases, superclases y herencia)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class persona{
protected String nombre = "Alejandro";
protected String apellidos = "Alfaro Sánchez";
protected int edad = 20;
protected String correoElectronico = "alejandro@alejandroalsa.es";
}
class estudiantes extends persona{
private int fechaGraduacion = 2024;
public static void main(String[] args){
estudiantes miObjeto = new estudiantes();
System.out.println("Nombre: " + miObjeto.nombre + " " + miObjeto.apellidos);
System.out.println("Edad: " + miObjeto.edad);
System.out.println("Correo Electrónico: " + miObjeto.correoElectronico);
System.out.println("Año de graduación: " + miObjeto.fechaGraduacion);
}
}
Modificadores de no acceso
Para las clases, puedes usar cualquiera de los dos, final o abstract.
finalLa clase no puede ser heredada por otras clases (más adelante veremos mas sobre herencia).abstractLa clase no puede utilizarse ara crear objetos, para acceder a una clase abstracta, debe heredarse de otra clase (más adelante veremos mas sobre herencia).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Clase abstracta
abstract class main{
public String nombre = "Alejandro";
public String apellidos = "Alfaro Sánchez";
public String correoElectronico = "alejandro@alejandroalsa.es";
public int edad = 20;
public abstract void estudiante(); // Método abstracto
}
class estudiantes extends main{
public int fechaGraduacion = 2024;
public void estudiante(){
System.out.println("Estudiar todo el día");
}
}
Para atributos y métodos
finalLos atributos y métodos no pueden ser modificados.staticLos atributos y métodos pertenecen a la clase, en lugar de a un objetoabstractSólo se puede utilizar en una clase abstracta, y sólo se puede utilizar en métodos. El método no tiene cuerpo, por ejemploabstract void run();. El cuerpo es proporcionado por la subclase (heredado de).transientAtributos y métodos se omiten al serializar el objeto que los contienesynchronizedLos métodos sólo pueden ser accedidos por un hilo a la vezvolatileEl valor de un atributo no se almacena en caché localmente, y siempre se lee de la “memoria principal”.