Modificador de acceso Java (controlador de acceso)
Java controla los derechos de acceso y otras funciones de clases, propiedades y métodos a través de modificadores, generalmente colocados en el extremo frontal de una declaración. Por ejemplo:
clase pública clase classname {// cuerpo de clase} private boolean myflag; static final doble semana = 9.5; protegido estático final int boxwidth = 42; public s tatic void main (string [] argumentos) {// cuerpo de método}Hay muchos modificadores en Java, divididos en modificadores de acceso y modificadores sin acceso. Esta sección solo introduce modificadores de acceso, y los modificadores sin acceso no se introducirán más adelante.
Los modificadores de acceso, también conocidos como caracteres de control de acceso, se refieren a palabras clave que pueden controlar los derechos de uso de las clases, variables de miembros y métodos.
Los controladores de acceso son un concepto importante en la programación orientada a objetos y pueden usarse para proteger el acceso a clases, variables, métodos y constructores.
Java admite cuatro permisos de acceso diferentes:
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 paquetes no utilizados, 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.
El siguiente método utiliza control de acceso público:
Public static void main (string [] argumentos) {// cuerpo de método} 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.
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.
Las subclases pueden acceder a métodos y variables declaradas por modificadores protegidos, 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 Bark () de la clase principal.
Public Class Dog {Protected Void Bark () {System.out.println ("wow, no vienes"); , Muy asustado, no me sigas ");}} Si el método Bark () se declara privado, entonces las clases que no sean el perro no podrán acceder al método. Si Bark () se declara público, entonces 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.
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 los métodos públicos de Getter/Setter 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 Dog {Nombre de cadena privada; (int Age) {this.age = Age;En el ejemplo, las variables de nombre y edad en la clase de perros son variables privadas, 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 pares de métodos públicos, getName ()/setname () y getAge ()/setage (), que se utilizan para obtener y establecer los valores de las variables privadas.
Esta es una palabra clave en Java.
La definición de métodos para acceder a variables privadas en una clase es habitual para nombrarlo así: prefijo "obtener" o "establecer" en el nombre de la variable y capitalizar la letra inicial de la variable. Por ejemplo, el método para obtener el nombre de la variable privada es getName (), y el método para establecer el nombre es setname (). Estos métodos a menudo se usan y tienen nombres específicos, llamados métodos Getter y Setter.
Valor predeterminado: no se usan palabras clave
No hay propiedades y métodos declarados modificadores 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.
Como se muestra en el siguiente ejemplo, la definición de clases, variables y métodos no utiliza ningún modificador:
Class Dog {String Name; Maestro, tengo hambre ");}}Control de acceso y herencia
Tenga en cuenta las siguientes reglas para la herencia (los lectores que no entienden el concepto de herencia pueden omitir aquí, o hacer clic en Java Heritancia y vista previa polimórfica):
Los métodos declarados como público en la clase matriz también deben ser públicos en la clase de niños.
Los métodos declarados como protegidos en la clase principal se declaran protegidos o públicos en la clase infantil. No se puede declarar como privado.
Los métodos declarados por modificadores predeterminados en la clase principal pueden declararse como privados en subclases.
Los métodos declarados como privados en la clase principal no pueden ser heredados.
Cómo usar caracteres de control de acceso
Los caracteres de control de acceso nos permiten controlar fácilmente los permisos del código:
Cuando necesite hacer que la clase escriba acceso a todas las demás clases, puede declarar el control de acceso de la clase como pública.
Cuando necesite hacer que su clase sea accesible solo por las clases en su propio paquete, se puede omitir el carácter de control de acceso.
Cuando es necesario controlar los datos de los miembros en una clase, los caracteres de control de acceso a datos de los miembros en esta clase se pueden establecer en público, protegidos u omitidos.
Alcance de las variables Java <Br /> En Java, el alcance de las variables se divide en cuatro niveles: nivel de clase, nivel de instancia de objeto, nivel de método y nivel de bloque.
Las variables a nivel de clase también se llaman variables globales o variables estáticas. Las variables a nivel de clase ya existen después de la definición de clase, se puede acceder al espacio de memoria de ocupación, a través de nombres de clase y no es necesario instanciar.
Una variable de nivel de instancia de objeto es una variable miembro.
Las variables de nivel de método son variables definidas dentro de los métodos, que son variables locales.
Las variables de nivel de bloque son variables definidas dentro de un bloque. Los bloques se refieren al código rodeado de aparatos ortopédicos, por ejemplo:
{int Age = 3; Error, las variables de edad y nombre System.out.println (nombre + "ya" + edad + "años de edad"); ilustrar:
Además de acceder a las variables de nivel de método, los métodos también pueden acceder a variables a nivel de clase y a nivel de instancia.
Se puede acceder a las variables a nivel de clase y a nivel de instancia dentro de un bloque.
Las variables del método y el nivel de bloque deben mostrarse inicializados, de lo contrario no se puede acceder.
Código de demostración:
Public Class Demo {public static string name = "weixueyuan"; test1 () {int j = 3; // variable de nivel de método if (j == 3) {int k = 5; son solo pueden acceder a system.out.println ("name =" + name + ", i =" + i + ", j =" + j);} public static void main (string [] args) {// no crear un objeto, acceda a la variable de nivel de clase System.out.println (demo.name); // Crear un objeto y acceder al método de IT demo t = new Demo (); T.Test1 ();}} Resultados de ejecución:
Micro Academy Name = Micro Academy, i = 0, J = 3