Java Language proporciona muchos modificadores, principalmente divididos en las siguientes dos categorías:
Los modificadores se utilizan para definir clases, métodos o variables, y generalmente se colocan en el extremo frontal de una declaración. Usemos los siguientes ejemplos para ilustrar:
clase pública clase className {// ...} private boolean myflag; static final doble semana = 9.5; protegido static final int boxwidth = 42; public static void main (string [] argumentos) {// cuerpo de método}Modificador de control de acceso
En Java, los controles de acceso se pueden utilizar para proteger el acceso a clases, variables, métodos y constructores. Java admite 4 permisos de acceso diferentes.
El valor predeterminado, también conocido como predeterminado, es visible dentro del mismo paquete sin usar ningún modificador.
Privado, especificado con el modificador privado, visible dentro de la misma clase.
Común, especificado por el modificador público, visible para todas las clases.
Protegido, especificado con el modificador protegido, visible para las clases y todas las subclases dentro del mismo paquete.
Modificador de acceso predeterminado: no se utilizan palabras clave
Las variables y los métodos declarados por modificadores de acceso predeterminados son visibles para las clases dentro del mismo paquete. Todas las variables en la interfaz se declaran implícitamente como una final estática pública, mientras que los métodos en la interfaz son públicos de forma predeterminada.
Ejemplo:
Como se muestra en el siguiente ejemplo, la declaración de variables y métodos puede ser sin ningún modificador.
Versión de cadena = "1.5.1"; boolean ProcessOrder () {return true;}Modificador de acceso privado - Privado
Los modificadores de acceso privado son el nivel de acceso más estricto, por lo que los métodos, variables y constructores declarados como privado solo pueden acceder por la clase a la que pertenecen, y las clases e interfaces no pueden declararse como privadas.
Las variables declaradas como tipo de acceso privado solo pueden acceder mediante clases externas a través de métodos públicos de Getter en la clase.
El uso del modificador de acceso privado se utiliza principalmente para ocultar los detalles de implementación de la clase y proteger los datos de la clase.
La siguiente clase utiliza un modificador de acceso privado:
Public Class Logger {Formato de cadena privada; public String getFormat () {return this.format; } public void setFormat (formato de cadena) {this.format = format; }}En el ejemplo, la variable de formato en la clase Logger es una variable privada, por lo que otras clases no pueden obtener directamente y establecer el valor de la variable. Para habilitar otras clases para manipular la variable, se definen dos métodos públicos: getFormat () (devuelve el valor de formato) y setformat (string) (establece el valor de formato)
Modificador de acceso público - público
Las clases, métodos, constructores e interfaces declaradas como públicas pueden acceder a cualquier otra clase.
Si se distribuyen varias clases públicas entre sí en diferentes paquetes, debe importar el paquete donde se encuentra la clase pública correspondiente. Debido a la herencia de la clase, todos sus subclases pueden heredar todos los métodos públicos y variables de la clase.
Las siguientes funciones usan control de acceso público:
Public static void main (string [] argumentos) {// ...}El método Main () de un programa Java debe establecerse en público, de lo contrario, el intérprete Java no podrá ejecutar la clase.
Modificador de acceso protegido - Protegido
Las variables, métodos y constructores declarados como protegidos pueden acceder a cualquier otra clase en el mismo paquete, o por subclases en diferentes paquetes.
El modificador de acceso protegido no puede modificar clases e interfaces. Los métodos y las variables miembros pueden declararse como protegidas, pero las variables miembros y los métodos miembros de la interfaz no pueden declararse como protegidos.
Las subclases pueden acceder a métodos y variables declaradas por el modificador protegido, para que puedan proteger las clases no relacionadas del uso de estos métodos y variables.
La siguiente clase principal utiliza el modificador de acceso protegido, y la subclase sobrecarga el método OpenSpeaker () de la clase principal ().
clase AudioPlayer {protegido boolean openSpeaker (altavoz sp) {// detalles de implementación}} class streamingaudioplayer {boolean openSpeaker (altavoz sp) {// detalles de implementación}}Si el método OpenSpeaker () se declara privado, entonces las clases que no sean AudioPlayer no podrán acceder al método. Si OpenSpeaker () se declara público, todas las clases pueden acceder al método. Si queremos que el método sea visible solo para una subclase de la clase en la que se encuentra, declare que el método está protegido.
Control de acceso y herencia
Tenga en cuenta las siguientes reglas de herencia:
Modificador sin acceso
Para implementar algunas otras funciones, Java también proporciona muchos modificadores sin acceso.
El modificador estático se utiliza para crear métodos de clase y variables de clase.
El modificador final se utiliza para modificar clases, métodos y variables. La clase modificada por final no puede ser heredada, el método modificado no puede ser redefinido por la clase heredada, y la variable modificada es una constante y no puede modificarse.
Modificador abstracto, utilizado para crear clases abstractas y métodos abstractos.
Los modificadores sincronizados y volátiles se utilizan principalmente para la programación de subprocesos.
Modificador estático
La palabra clave estática se usa para declarar variables estáticas independientemente de los objetos. No importa cuántos objetos se instancie una clase, solo tiene una copia de su variable estática. Las variables estáticas también se llaman variables de clase. Las variables locales se pueden declarar como variables estáticas.
La palabra clave estática se utiliza para declarar métodos estáticos independientemente de los objetos. Los métodos estáticos no pueden usar variables no estáticas de la clase. El método estático obtiene los datos de la lista de parámetros y luego calcula los datos.
Se puede acceder al acceso a las variables y métodos de clase directamente utilizando classname.variablename y classname.methodname.
Como se muestra en el siguiente ejemplo, el modificador estático se usa para crear métodos de clase y variables de clase.
clase pública Instancecounter {private static int numinstances = 0; protegido static int getCount () {return numInStances; } private static void addInStance () {numInStances ++; } Instancecounter () {Instancecounter.AddInstance (); } public static void main (string [] argumentos) {System.out.println ("Comenzando con" + Instancecounter.getCount () + "Instancias"); para (int i = 0; i <500; ++ i) {nuevo instancecounter (); } System.out.println ("creado" + instancecounter.getCount () + "instancias"); }}Los ejemplos anteriores se ejecutan y se editan de la siguiente manera:
Comenzó con 0 instancias
Creado 500 instancias
Modificador final
Variables finales:
Las variables finales se pueden inicializar explícitamente y solo se pueden inicializar una vez. Las referencias a los objetos declarados como finales no pueden apuntar a diferentes objetos. Pero los datos en el objeto final se pueden cambiar. En otras palabras, la referencia al objeto final no se puede cambiar, pero el valor interno se puede cambiar.
Los modificadores finales generalmente se usan junto con modificadores estáticos para crear constantes de clase.
Ejemplo:
prueba de clase pública {final int value = 10; // A continuación se muestra un ejemplo que declara una constante pública estática final int boxwidth = 6; Título de cadena final estática = "Manager"; public void ChangeValue () {valor = 12; // se emitirá un error}}Método final
El método final en la clase puede ser heredado por la subclase, pero la subclase no puede modificar.
El objetivo principal de declarar un método final es evitar que el contenido del método se modifique.
Como se muestra a continuación, declare el método utilizando el modificador final.
Prueba de clase pública {public final void changeName () {// Method Body}}Clase final
Las clases finales no se pueden heredar, y ninguna clase puede heredar ninguna característica de las clases finales.
Ejemplo:
Prueba de clase final pública {// Class Body}Modificador abstracto
Clase abstracta:
Las clases abstractas no se pueden usar para instanciar objetos. El único propósito de declarar clases abstractas es expandir la clase en el futuro.
Una clase no puede ser modificada por abstracto y final al mismo tiempo. Si una clase contiene métodos abstractos, la clase debe declararse como una clase abstracta, de lo contrario se producirá un error de compilación.
Las clases abstractas pueden contener métodos abstractos y métodos no abstractos.
Ejemplo:
Caravana de clase abstracta {precio doble privado; modelo de cadena privada; año de cadena privada; público abstracto void gofast (); // Método de resumen Public Abstract void Changecolor ();}Métodos abstractos
Un método abstracto es un método sin ninguna implementación, y una subclase proporciona la implementación específica del método. Los métodos abstractos no pueden declararse como finales y estrictos.
Cualquier subclase que hereda una clase abstracta debe implementar todos los métodos abstractos de la clase principal a menos que la subclase también sea una clase abstracta.
Si una clase contiene varios métodos abstractos, la clase debe declararse como una clase abstracta. Las clases abstractas pueden no contener métodos abstractos.
La declaración de un método abstracto termina con un punto y coma, por ejemplo: public Abstract Sample ();
Ejemplo:
Public Abstract Class SuperClass {Abstract void m (); // Método abstracto} La subclase de clase extiende la superclase {// Implementar el método abstracto void m () {.........}}Modificador sincronizado
El método declarado por la palabra clave sincronizada solo se puede acceder mediante un hilo al mismo tiempo. El modificador sincronizado se puede aplicar a cuatro modificadores de acceso.
Ejemplo:
Public sincronizado void showDetails () {......}Modificador transitorio
Cuando un objeto serializado contiene una variable de instancia modificada transitoria, la máquina virtual Java (JVM) omite esa variable específica.
Este modificador se incluye en una declaración que define una variable y se utiliza para preprocesar los tipos de datos de clases y variables.
Ejemplo:
Public Transient int Limit = 55; // no persistpublic int b; // persistirá
modificador volátil
Las variables de miembros modificados volátiles se ven obligadas a releer el valor de la variable miembro de la memoria compartida cada vez que se accede por un hilo. Además, cuando la variable de miembro cambia, el hilo se ve obligado a volver a escribir el valor de cambio a la memoria compartida. De esta manera, en cualquier momento, dos hilos diferentes siempre ven el mismo valor de una determinada variable miembro. Una referencia de objeto volátil puede ser nula.
Ejemplo:
Public Class Myrunnable Implements Runnable {Private Volatile Boolean Active; public void run () {activo = true; while (activo) // línea 1 {// código}} public void stop () {activo = false; // línea 2}}En general, el método run () se llama en un hilo y el método stop () se llama en otro hilo. Si se usa el valor en la línea 1 en el búfer, el bucle no se detendrá cuando el activo en la línea 2 se establece en falso.
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo sea de ayuda para el estudio o el trabajo de todos. ¡También espero apoyar a Wulin.com más!