En Java, todo tiene alguna forma de control de acceso.
Los niveles de control de los permisos de acceso son de los permisos de acceso de paquetes más grandes a los mínimos: público, protegido, de paquetes (sin palabras clave) y privado.
Cuando se usan, los modificadores de acceso Java, públicos, protegidos y privados, se colocan antes de cada definición de miembro (dominio o método) en la clase.
1. Derechos de acceso de los miembros de la clase
La única forma de obtener acceso a un miembro es:
1). Hacer público a este miembro. No importa quién sea, se puede acceder al miembro;
2). Otorgar el acceso de paquetes a los miembros mediante modificadores desacuerdo y colocando otras clases en el mismo paquete, y otras clases en el paquete pueden acceder al miembro;
3). Las clases hereditarias pueden acceder a miembros públicos y miembros protegidos.
4). Proporcione métodos de accesor y mutador para leer y cambiar los valores numéricos.
1. Permisos de acceso al paquete
El permiso de acceso predeterminado no tiene ninguna palabra clave, pero Pass se refiere a los permisos de acceso al paquete, lo que significa que todas las demás clases en el informe actual tienen acceso a ese miembro, pero para todas las clases fuera de este paquete, este miembro es realmente privado.
El acceso al paquete combina todas las clases relevantes dentro del paquete para que puedan interactuar fácilmente entre sí.
Nota: Si las dos clases están en el mismo directorio y no establecen ningún nombre de paquete para ellos mismos, Java considerará automáticamente dichos archivos como el paquete predeterminado afiliado al directorio, por lo que estos archivos tienen acceso de paquete entre sí.
El siguiente ejemplo ilustra este problema:
// El pastel de clase y el pastel están en el mismo directorio y no se muestran explícitamente en ningún paquete de la clase Pie {void f () {System.out.println ("PIE.F ()"); }} Cake de clase {public static void main (string [] args) {pastel x = new Pie (); xf (); }} // La salida es pastel.f ()2. Public: permisos de acceso a la interfaz
Usar la palabra clave pública significa que las declaraciones de miembros posteriores están disponibles para todos, especialmente programadores de clientes que usan bibliotecas de clase.
3.Privado: no puede acceder a él
La palabra clave privada indica que ninguna otra clase que la clase que contiene el miembro no puede acceder al miembro. Otras clases en el mismo paquete no pueden acceder a los miembros privados de esta clase, por lo que esto es equivalente a aislarse.
Esta función de la palabra clave privada tiene muchos usos, como controlar cómo se crean los objetos y evitar que otros accedan directamente a un constructor específico (o todos los constructores). mirar
El siguiente ejemplo:
clase Sundae {private sundae () {} shatic sundae makeasundae () {return new Sundae (); }} clase pública ICECREAM {public static void main (string [] args) {Sundae x = Sundae.makeasundae (); }}En este ejemplo, podemos crear objetos Sundae llamando al método makeasundae (), pero no podemos crearlos a través del constructor.
Esto también se aplica a los campos privados en la clase.
Sin embargo, una cosa a tener en cuenta es que no puede pensar que otros objetos no pueden tener referencias públicas al objeto solo porque la referencia a un objeto en la clase es privada.
4.Protectado: heredar permisos de acceso
Si se crea un nuevo paquete y hereda la clase desde otro paquete, el único miembro al que se puede acceder es el miembro público del paquete de origen.
A veces, el creador de una clase base quiere asignar acceso a un miembro en particular a la clase derivada en lugar de todas las clases, lo que requiere la palabra clave protegida.
Tenga en cuenta que Protected también proporciona acceso al paquete, es decir, otras clases dentro del mismo paquete también pueden acceder a elementos protegidos de esta clase.
2. Interfaz e implementación
El control de los derechos de acceso a menudo se conoce como oculto en implementaciones concretas.
Los datos y métodos de empaque en clases, y la ocultación de implementaciones específicas a menudo se denominan colectivamente encapsulación.
Por dos razones importantes, el control de permiso de acceso se encuentra los límites de los permisos dentro del tipo de datos:
1. Establezca los límites que los programadores de clientes pueden usar y no pueden usar. Puede establecer su propio mecanismo interno en la estructura, sin preocuparse de que los programadores de clientes traten accidentalmente el mecanismo interno como parte de la interfaz que usan.
2. Separe la interfaz y la implementación específica.
3. Permisos de acceso a clase
En Java, los modificadores de acceso también se pueden usar para determinar qué clases en la biblioteca están disponibles para el usuario de la biblioteca.
Los modificadores deben colocarse antes de la clase de palabras clave. Por ejemplo:
Widget de clase pública {......} o
Mejorar Access.Widget;
Debe saber que una clase no puede ser privada (si la clase es privada, entonces ninguna otra clase puede acceder a ella, excepto la clase), ni puede protegerse (de hecho, una clase interna puede ser privada o protegida, pero este es un caso especial, como se describe en artículos posteriores), y solo puede ser permisos de acceso a paquetes o público.
Si no desea que otros accedan a la clase, puede especificar todos los constructores de la clase como privados, evitando que cualquiera cree objetos de la clase. Pero hay excepciones a esto, que no pueden evitar que cree la clase dentro del miembro estático de la clase. Veamos el siguiente ejemplo:
class soup1 {private soup1 () {} public static soup1 Makeoup () {// Crea un objeto usando un método estático return New soup1 (); }} class soup2 {private soup2 () {} private static soup2 ps1 = new soup2 (); // Crear un objeto usando el modo Singleton public static soup2 access () {return PS1; } public void f () {}} public class Lunch {void testPrivate () {// soup1 sopa = new Soup1; No se puede ejecutar} void testSingleton () {soup2.access (). F (); }}Podemos ver que los constructores de Soup1 y Soup2 son privados, y nadie puede usar directamente el constructor para crear objetos de esta clase. Pero también podemos usar estas dos clases: crear un método estático en Soup1, usar el constructor para crear un objeto Soup1 y devolver su referencia; La creación de Soup2 usa el patrón Singleton en el patrón de diseño y solo puede crear uno de sus objetos. El objeto de la clase Soup2 se crea como un miembro privado estático de Soup2, por lo que solo hay uno, y no se puede acceder a menos que se accediera a través del método público.
Además, vale la pena señalar algunas limitaciones:
1. Cada unidad de compilación solo puede tener una clase pública.
2. El nombre de la clase pública debe coincidir exactamente con el nombre del archivo que contiene la unidad de compilación, incluida la caja superior y minúscula.
3. Si no hay clase pública en la unidad de compilación, puede nombrar el archivo a voluntad.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.