Java gramática básica: Día 06 [Herencia y método de construcción]

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

  1. Debe ser llamado setXXX o getXXX reglas de nomenclatura.
  2. Para Getter, los parámetros tienen no, tipo de retorno y la variable miembro correspondiente;
  3. 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

Supongo que te gusta

Origin www.cnblogs.com/luoahong/p/12605103.html
Recomendado
Clasificación