Este artículo analiza principalmente las palabras clave comunes de Java final, static, super, y esto en detalle para facilitar la referencia de los lectores. Los detalles son los siguientes:
1. final
1) Modificar clase:
Indica que esta clase no se puede heredar
2) Modificar método (método)
Indica que este método no se puede anular (@override)
3) Modificar variable (variable)
Indica que el valor de esta variable no se puede cambiar más adelante. A menudo se usa para modificar constantes inmutables.
Nota: final significa literalmente "final" e "inmutable". Es más conveniente memorizarlo combinando el significado.
2. estático (el segundo y tercer método se usan comúnmente)
1) Modificar clase:
(No se usa comúnmente) solo se puede usar para modificar clases internas. Las clases ordinarias no pueden declararse de esta manera.
2) Modificar método (método)
Los métodos estáticos pertenecen a la clase (compartidos entre objetos), no a un objeto determinado. No es necesario crear un objeto, puede usar el nombre de la clase para llamar a este método.
(Cuando se ejecuta el programa, el código de bytes de la clase se carga en la memoria. Cuando la clase no crea un objeto, a la variable de clase se le ha asignado memoria y a la variable de instancia se le asigna espacio de memoria solo cuando se crea un objeto específico. )
3) Modificar variable (variable)
Similar a 2), las variables se comparten a nivel de clase y no hay necesidad de crear objetos, pero el cambio en el valor de la variable es integral Es decir, si el objeto A cambia el valor de una variable estática al operar. en él, entonces el objeto B operará en él es la variable estática modificada.
Nota: Los bloques de código modificados con estática se denominan bloques de código estático. Los bloques de código estático se ejecutan primero cuando la JVM carga la clase, sin importar dónde se coloquen, se ejecutan primero y luego se ejecutan los bloques de código normal. Puede haber varios bloques de código estático, que la JVM ejecutará en el orden de aparición. Cada bloque de código solo se ejecutará una vez.
Las palabras clave this y super no pueden aparecer en métodos estáticos.
3. super: (refiriéndose a la referencia a la clase padre)
1) Relacionado con Clase (clase principal, también llamada superclase):
Llame al constructor de la clase principal a través de super(parámetro 1, parámetro 2,..., parámetro n);
2) Relacionado con el método (método)
super.Method(parámetro 1, parámetro 2,..., parámetro n) llama al método anulado de la clase principal;
3) Relacionado con variable (variable)
super.variable, llama a la variable de la clase padre
Nota: super debe usarse en la primera línea del constructor de la subclase;
Cuando la clase principal no tiene un constructor sin parámetros, la subclase necesita usar super para llamar explícitamente al constructor de la clase principal. Super hace referencia a la clase principal.
4. esto: (referencia al objeto actual)
1) Relacionado con la clase:
this (parámetro 1, parámetro 2,..., parámetro n), este es un constructor ordinario. Solo el constructor (otro) puede llamar al constructor (esto), y las funciones ordinarias no pueden llamar al constructor.
2) Método relacionado:
Llamar a un método en el objeto actual
3) Variable (variable) relacionada:
Llamar a la variable del objeto actual.
Nota: this(); y super(); llamar explícitamente al constructor solo se puede colocar en la primera línea de la construcción;
this.method..();super.method..(); se puede colocar en cualquier lugar y utilizar como método normal;
Existe una gran diferencia entre constructores y métodos que utilizan la palabra clave this. La referencia del método apunta a la instancia de la clase en la que se ejecuta el método. Los métodos estáticos no pueden usar la palabra clave this, porque los métodos estáticos no pertenecen a instancias de la clase, por lo que esto no tiene nada que señalar. El this del constructor apunta a otro constructor de la misma clase con una lista de parámetros diferente.