JavaRush /Blog Java /Random-ES /Modificadores o cómo lanzar encantamientos en el mundo Ja...
Petr Gorskin
Nivel 22
Москва

Modificadores o cómo lanzar encantamientos en el mundo Java

Publicado en el grupo Random-ES
¡Buen día galáctico, camaradas! Este es mi primer manuscrito interplanetario y como soy ingeniero, la interpretación de algunos conceptos se puede hacer en un lenguaje extraterrestre.
Modificadores o como lanzar encantamientos en el mundo de Java - 1
Introducción En mi opinión, Java es como un pasillo interminable con puertas (paquete). Detrás de cada una de estas puertas hay espacio libre y un archivador en el que se guarda una montaña de pergaminos mágicos con instrucciones (clases) para crear objetos. Cada pergamino describe un conjunto de características (variables) y habilidades (métodos): acciones (campos) realizadas ya sea en la clase misma o en un objeto ensamblado sobre su base. En esta etapa, imaginemos que somos magos e intentemos crear una instrucción (clase) completamente nueva. Entonces: Modificadores o como lanzar encantamientos en el mundo Java - 2bebamos el elixir de la sabiduría (aprendamos lo básico) y comencemos a escribir instrucciones. Modificadores de acceso y no acceso Imaginemos que cualquier instrucción y un objeto creado en base a ella, así como sus características y habilidades, inicialmente estarán encantados mágicamente, es decir. se les asignarán conjuntos específicos de modificadores. Intentemos crear una guía sobre posibles encantamientos.
  1. El modificador de acceso , que describe la accesibilidad de una clase, objeto o campo, es obligatorio: en su ausencia, la JVM (esta es una fuente de magia universal) asigna automáticamente un identificador predeterminado al paquete.

    A partir del segundo modificador hay modificadores que no son de acceso, que no son obligatorios y también pueden entrar en conflicto entre sí (pero lo primero es lo primero).

  2. El modificador Estático indica que la clase, objeto o campo es estático. Pero, ¿qué significa? Básicamente lo probaremos en los campos.

    Las variables estáticas se denominan variables de clase y son únicas para todas las instancias de esa clase. Se pueden llamar métodos estáticos sin crear el objeto en el que se declaran. Las clases estáticas se utilizan cuando se anida una clase en otra y el principio de interacción entre la clase interna y la externa es similar a los métodos (este es un tema para una discusión separada). También se puede utilizar como un bloque separado dentro de un objeto.

  3. El modificador Final indica efectivamente a una variable que es una constante. Para los métodos, que no se pueden anular durante la herencia, pero para las clases, esto es una indicación de que no se puede heredar de ellos (inmutable).

    Los modificadores estático y final se aplican a clases, objetos y campos. Sin embargo, hay modificadores que se aplican sólo a algunos de ellos (o incluso a parte de ellos, ya que tanto una variable como un método son un campo, pero no todos los modificadores se aplican a ambos). Si hacemos una analogía, solo se pueden encantar botas y guantes para aumentar la velocidad (para que se muevan más rápido), pero encantar un sombrero para aumentar la velocidad no tiene sentido (y el Consejo de Supervisión Universal (compilador) no lo permitirá).

  4. El modificador Abstract solo se aplica a métodos y clases . Un método abstracto es un método sin implementación (cuerpo).

    Si una clase está marcada como abstracta, contiene métodos abstractos o se hace para evitar la creación de instancias de esa clase. Si hacemos una analogía, en medio de las instrucciones se puede ver el título "Colorear un objeto", tras el cual no hay descripción. Aquellos. Usando esta instrucción puedes crear un objeto y también puedes colorearlo, pero esta instrucción en particular no dice cómo (escribe tus propias instrucciones para crear un objeto rojo basado en este objeto y describe cómo colorearlo).

Cuando se trabaja en un entorno de subprocesos múltiples, se pueden utilizar modificadores especiales:
  1. El modificador Sincronizado se usa solo para métodos. Su presencia indica que sólo un hilo puede ejecutarlo a la vez. También se puede utilizar como un bloque de código separado dentro de un objeto (especificando el objeto de sincronización).

  2. Modificador volátil : solo para variables . Se recomienda su uso para variables que pueden ser utilizadas simultáneamente por varios subprocesos. Una variable con dicho modificador se copia instantáneamente desde la memoria caché del procesador a la memoria principal cada vez que cambia, lo que permite que los subprocesos paralelos reciban el valor más reciente.

    Vale la pena señalar que volátil es aplicable en los casos en que solo un hilo puede escribir en una variable y el resto solo puede leer de ella. Para otros casos, es mejor agregar el modificador sincronizado a los métodos que escriben en una variable volátil.

  3. Modificador transitorio : solo para variables . Este modificador marca las variables que deben omitirse al serializar un objeto (este es un proceso tan inteligente que, en principio, puedes leerlo tú mismo...)*

    * - Escribí este artículo en el nivel 17 y hasta entonces no se había descrito la serialización como proceso, por lo que en lugar de copiar y pegar, te aconsejo que lo estudies tú mismo si es necesario.

Pares de modificadores en conflicto Además de la aplicabilidad de modificadores a varias clases, objetos y campos, también existe el concepto de pares en conflicto. Digamos que encantar un casco con fuerza lo vuelve pesado y al mismo tiempo quieres encantarlo para que sea liviano. Uno no encaja con el otro.
  1. Final y volátil : cuando se trata de variables, no podemos decir al mismo tiempo que es final (constante) y que varios hilos tienen la capacidad de cambiarlo... Después de todo, es constante y en cualquier momento un hilo puede leerlo. , pero ni un solo hilo puede cambiar la constante (el Consejo Universal de Supervisión no lo permitirá).
  2. Final y abstracto : las clases y métodos no pueden ser al mismo tiempo abstractos (lo que en la mayoría de los casos implica la necesidad de aclararlos para su implementación) y finales, es decir. inmutable. Resulta que las instrucciones dicen cómo crear un casco bueno y duradero a partir de cualquier material (parte abstracta), pero para ello no debe tener agujeros (la parte final obligatoria no se puede cambiar).
  3. Abstracto y estático : un método abstracto no puede ser estático ni sincronizado al mismo tiempo. Un método abstracto estático no tiene sentido, porque no sólo no hace nada, sino que además pertenece a una clase entera: el resultado es algo inútil.
  4. Abstracto y sincronizado : ¿cuál es el punto de sincronizar el trabajo con un método que no hace nada?
Resumiendo Entonces, la descripción de los modificadores terminó, todos los conflictos se resolvieron y ahora puede consolidar el resultado con una hoja de trucos: un diagrama de encantamientos: Modificadores o como lanzar encantamientos en el mundo de Java - 3en conclusión, quiero decir que escribir este artículo fue la realización de mi deseo. estudiar modificadores. Depende de usted juzgar si la experiencia es exitosa o no. Estoy esperando sus sugerencias para mejorarlo/corregirlo y, tal vez juntos, lo convertiremos en un manual muy útil para los jugadores principiantes de Java.
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION