En primer lugar, ¿cuál es el paquete
1, el paquete general
lenguaje de programación orientado a objetos es una simulación del mundo objetivo, el mundo objetivo, variables miembro están ocultos en el interior del objeto, el mundo exterior no puede manipular y modificar directamente. El paquete puede ser considerado como una barrera protectora contra los códigos de clase y otros tipos de datos se accede al azar.
Para acceder a este tipo de datos, debe especificar el camino a través. encapsulación adecuada hace que el código sea más fácil de entender y mantener, y mejorar el código de seguridad
2, el principio
3, la etapa de envasado
1. Use palabras clave para modificar las variables miembro privadas.
2. La necesidad de acceso a variables miembro, proporcionando un par correspondiente de método getXXX, método setXXX
En segundo lugar, la operación -private clave paquete
1. Descripción del problema: En la definición de la edad de la persona, no puede evitar que el valor razonable se ajusta a entrar.
Solución: tendrá que ser protegida variables miembro pueden ser modificados La clave privada.
Una vez que el uso privado de modificación, entonces esta clase que todavía puede ser libremente accesible. Pero! Fuera de este rango más allá de la categoría ya no puede acceder directamente.
acceso indirecto variables miembro privadas, es la definición de un par de niños de captador / métodos setter
- Debe ser llamado setXXX o getXXX reglas de nomenclatura.
- Para Getter, los parámetros tienen no, tipo de retorno y la variable miembro correspondiente;
- Para Setter, no se puede devolver un valor, tipos de parámetros, y la variable miembro correspondiente.
2, el código de ejemplo
clase de persona
la clase Person {public String nombre; // Nombre privada int edad; // Edad public void Mostrar () { System.out.println ( "Mi nombre:" + nombre + "edad:" + Edad); } // esto el método de miembros dedicada a la edad de los datos de ajuste public void del setAge (int num) { SI (NUM <100 && NUM> = 9.) {// Si este es el caso razonable edad NUM =; } else { System.out.println ( " los datos no razonable ") ;! } } // este método miembros, en concreto susurro obtienen datos de edad int pública getAge () { edad retorno; } }
Categoría de prueba
day06.demo03 paquete; Demo03Person public class { void main (String [] args) {public static la Persona Persona = new nuevo la Persona (); person.show (); PERSON.NAME = "Zhao Liying"; // person.age = -20 ; // acceso directo al contenido privado, redacción equivocada! person.setAge (20 es); person.show (); } }
Los resultados operativos
"D: \ Archivos de programa \ Java \ jdk-13.0.2 \ bin \ java.exe" "-javaagent: D: \ Archivos de programa \ JetBrains \ IntelliJ IDEA 2.019,2 \ lib \ idea_rt.jar = 62064: D: \ Archivos de programa \ \ JetBrains IntelliJ IDEA 2.019,2 \ bin "-Dfile.encoding = UTF-8 -classpath C: \ onedrive \ java \ src \ out \ producción \ onedrive day06.demo03.Demo03Person mi nombre: null, Edad: mi nombre: Zhao Liying edad: 20 Proceso de Acabado con código de salida 0
3, practicar el uso de las definiciones claves privadas
La definición de la clase
day06.demo03 paquete; / * para el valor booleano entre el tipo básico, el método debe ser escrito en la forma Getter isXxx y setXXX gobierna sin cambios. * / Clase Estudiante Pública { private String nombre; // nombre privada int edad; // Edad privada booleano masculina; // hombre niño no es pública setMale vacío (booleano B) { MACHO = B; } public boolean IsMale () { retorno masculina; } public void del setName (string cadena) { name = STR; } public String getName () { nombre de retorno; } public void del setAge (int num) { Edad = NUM; } public int getAge () { la edad de retorno; } }
Define la clase de prueba
day06.demo03 empaquetar; Demo04Student public class { void main (String [] args) {public static Stu Estudiante Estudiante = new (); stu.setName ( "鹿晗"); stu.setAge (20); stu.setMale (true); System.out.println ( "姓名:" + stu.getName ()); System.out.println ( "年龄:" + stu.getAge ()); System.out.println ( "是不是爷们儿:" + stu.isMale ()); } }
Los resultados operativos
"D: \ Archivos de programa \ Java \ jdk-13.0.2 \ bin \ java.exe" "-javaagent: D: \ Archivos de programa \ JetBrains \ IntelliJ IDEA 2.019,2 \ lib \ idea_rt.jar = 62152: D: \ Archivos de programa \ JetBrains \ IntelliJ IDEA 2019,2 \ bin" -Dfile.encoding = UTF-8 -classpath C: \ onedrive \ java \ src \ out \ producción \ onedrive day06.demo03.Demo04Student 姓名:晗鹿 年龄: 20 是不是爷们儿: verdadero proceso terminó con código de salida 0
En tercer lugar, el nombre de la variable de parámetros con el mismo nombre que un nombre de variable miembro Bueno, ¿cómo hacer?
1. Descripción del problema
Se encontró que el método el nombre formal de parámetros setXXX no cumple con lo establecido en la intención de ver para saber el nombre, por lo que si se modifica en consonancia con el nombre de la variable miembro, si ves el nombre para saber el significado de la misma? Código es el siguiente:
Estudiante public class { private String nombre; int edad privada; pública setName void (String nombre) { name = nombre; } Pública setAge vacío (int edad) { edad = edad; } }
Después de la modificación y pruebas, hemos encontrado un nuevo problema, los miembros de la asignación de variables falló. Es decir, después de modificar setXXX () el nombre de la variable de parámetros, el método no da la asignación de variables miembro! Esto es porque el nombre de la variable de parámetros con el mismo nombre que un nombre de variable de miembro, lo que resulta en el nombre de la variable miembro está oculta,
el método de nombre de variable no puede tener acceso a la variable, así que la asignación de falla. Por lo tanto, sólo podemos usar esta palabra clave, para resolver este problema el mismo nombre
2, este significado
Hace referencia al objeto actual de esta clase representa el (valor de dirección) de ubicación que sus referencias a objetos.
Recuerde: el método objeto se llama, este método representa ese objeto. Esto es a quien llamar, que esto representa.
2, este formato utilizado
. Este nombre variable miembro;
3, el uso de estas variables método modificado, variables miembro para resolver el problema de código oculto es como sigue
clase de persona
day06.demo04 paquete; / * miembro cuando las variables del proceso y variables locales del mismo nombre del tiempo de la clase, de acuerdo con "el principio de proximidad" utilizan preferentemente variables locales. Si necesita acceder a las variables miembro de esta clase que se requiere para utilizar el formato: . El nombre de la variable de esta persona "Por el método que se llaman, que es el presente" * / Clase pública la Persona { String nombre; // mi propio nombre // nombre del parámetro es el nombre de la persona // nombre de variable miembro es su nombre public void sayHello (String nombre) { System.out.println (nombre + "hola soy." + this.name); System.out.println (el presente ); } }
Categoría de prueba
day06.demo04 paquete de penalización para; Demo01Person public class { void main (String [] args) {public static a la persona la persona = new nuevo la Persona (); // establecer mi propio nombre person.name = "Wang Jianlin"; person.sayHello ( "Sicong" ); System.out.println (persona); // valor de dirección } }
Los resultados operativos
"D: \ Archivos de programa \ Java \ jdk-13.0.2 \ bin \ java.exe" "-javaagent: D: \ Archivos de programa \ JetBrains \ IntelliJ IDEA 2.019,2 \ lib \ idea_rt.jar = 62613: D: \ Archivos de programa \ JetBrains \ IntelliJ IDEA 2019,2 \ bin" -Dfile.encoding = UTF-8 -classpath C: \ onedrive \ java \ src \ out \ producción \ onedrive day06.demo04.Demo01Person 王思聪,你好我是王健林. day06.demo04. persona @ 9807454 day06.demo04.Person@9807454 Proceso terminado con código de salida 0
En cuarto lugar, el método de optimización de la construcción del paquete 2--
Definición Formato 1, el constructor
Modificador de nombre de constructor (lista de parámetros) { // Método miembro }
2, el código de ejemplo
categoría de estudiantes
day06.demo04 Pena paquete de; / * método constructor está diseñado para crear un objeto, cuando creamos un objeto por palabra clave nueva, de hecho, llamar al método constructor. Formato: nombre de la clase pública (tipo de parámetro de nombre de parámetro) { método de cuerpo } Nota: 1. El nombre y la ubicación del constructor debe ser exactamente el mismo que el nombre de la clase, e incluso tienen la misma capitalización 2. No escriba tipo de retorno constructor, ni siquiera escribir vacío 3. el constructor no puede devolver un valor de retorno específica 4. Si no se escribe ningún constructor, el compilador por defecto presentado un constructor, sin parámetros, el cuerpo del método no hace nada en absoluto. Estudiante pública () {} 5. El que una vez programada, al menos, un constructor, no se presentará el compilador. 6. El método de construcción también puede ser sobrecargado. Sobrecargada: El mismo nombre de método, pero diferente lista de parámetros. * / Estudiante Clase pública { // variable miembro nombre privada Cadena; private int Edad; // ningún argumento del constructor pública Estudiante () { System.out.println ( "constructor sin argumentos ejecutarlo!"); } // constructor de parámetros completa Estudiante pública (String nombre, int edad) { System.out.println ( "método de argumentación completa constructor para la realización de él!"); This.name = nombre; this.age = Edad; } // Getter colocador public void del setName (String nombre) { this.name = nombre; } public String getName () { nombre de retorno; } public void del setAge (int Edad) { this.age = Edad; } public int getAge () { retorno de edad; } }
Categoría de prueba
day06.demo04 paquete; Demo02Student public class { public static void main (String [] args) { Estudiante Stu1 nueva nueva Student = (); // constructor sin argumentos System.out.println ( "========== == "); Estudiante STU2 = new nueva Estudiante (" Zhao Liying "20); // toda argumento del constructor System.out.println (" nombre: "+ stu2.getName () +" , edad: "+ stu2.getAge ( )); // Si es necesario cambiar el contenido de datos variable miembro entre los objetos, aún es necesario utilizar setXXX método stu2.setAge (21); // cambiar la edad System.out.println ( "nombre:" + stu2.getName () + "Edad:" + stu2.getAge ()); } }
El resultado:
"D: \ Archivos de programa \ Java \ jdk-13.0.2 \ bin \ java.exe" "-javaagent: D: \ Archivos de programa \ JetBrains \ IntelliJ IDEA 2.019,2 \ lib \ idea_rt.jar = 62708: D: \ Archivos de programa \ \ JetBrains IntelliJ IDEA 2.019,2 \ bin "-Dfile.encoding = UTF-8 -classpath C: \ onedrive \ java \ src \ out \ producción \ onedrive day06.demo04.Demo02Student constructor sin argumentos ejecutarlo! ============ toda método constructor argumento para llevarla a cabo! Nombre: Zhao Liying, Edad: 20 Nombre: Zhao Liying, Edad: 21 Proceso de Acabado con código de salida 0
3 Notas
1. Si no se proporciona un constructor, el sistema no dará parámetros del constructor. 2. Si usted proporciona un constructor, el sistema ya no proporcionará constructor sin argumentos. 3. El método de construcción está sobrecargado, los parámetros pueden ser definidos, o no puede definir los parámetros
En quinto lugar, el código estándar para -JavaBean
JavaBean es una especificación estándar de Java escrito en una clase de lengua. se reúnen los requisitos de clase JavaBean y clase específica deben ser públicas y constructor sin argumentos, para proporcionar un método para hacer funcionar un conjunto y obtener variable miembro.
NombredeClase clase {public // variables miembro // constructor // constructor sin argumentos [deben] // constructoras tienen parámetros [propuesta] // Método miembros // getXXX () // setXXX () }
Preparado de acuerdo con la clase JavaBean estándar, clase estudiante, por ejemplo, el código estándar es como sigue:
Una clase estándar por lo general tienen los siguientes cuatro componentes:
1. Todas las variables miembro deben ser modificados utilizando la clave privada
2 para la preparación de cada variable miembro de un par de niños método getter / Setter
3. Preparación de un constructor sin argumentos
4. escribir parámetros de constructor completos
Tal clase estándar, también conocido como Java Bean
day06.demo05 empaquetar; Estudiante public class { private String nombre; int edad privada; // Constructor什么都不选择 Estudiante pública () { } // Código-Constructor全选 Estudiante pública (String nombre, edad int) { this.name = nombre; this.age = edad; } // Código-Generar-get y set public String getName () { nombre de retorno; } Pública setName void (String nombre) { this.name = nombre; } Public int getAge () { edad de retorno; } Pública setAge vacío (int edad) { this.age = edad; } }
Las clases de prueba, de la siguiente manera:
Demo01Student public class { void main (String [] args) {public static Stu1 Estudiante Estudiante = new (); stu1.setName ( "迪丽热巴"); stu1.setAge (20); System.out.println ( "姓名:" + stu1.getName () + "年龄:" + stu1.getAge ()); System.out.println ( "================="); Stu2 estudiante = new Estudiante ( "古力娜扎", 21); System.out.println ( "姓名:" + stu2.getName () + "年龄:" + stu2.getAge ()); stu2.setAge (22); System.out.println ( "姓名:" + stu2.getName () + "年龄:" + stu2.getAge ()); } }
Los resultados operativos
"D: \ Archivos de programa \ Java \ jdk-13.0.2 \ bin \ java.exe" "-javaagent: D: \ Archivos de programa \ JetBrains \ IntelliJ IDEA 2.019,2 \ lib \ idea_rt.jar = 63198: D: \ Archivos de programa \ JetBrains \ IntelliJ IDEA 2019,2 \ bin "-Dfile.encoding = UTF-8 -classpath C: \ onedrive \ java \ src \ out \ producción \ onedrive day06.demo05.Demo01Student nombre: Dilly Reba, Edad: 20 == =============== nombre: Coulee Nazha, Edad: 21 nombre: Coulee Nazha, Edad: 22 Proceso de Acabado con código de salida 0