La función de esto en Java es hacer referencia a un objeto, según la ubicación de este, los principales métodos de referencia se dividen en dos situaciones:
- Consulte el objeto inicializado en el constructor en el constructor;
- Consulte el objeto que llama al método en el método
El papel más importante de esto es permitir que un método de la clase acceda a otro método o variable de instancia;
public class DogText {
//定义一个 jump 方法
public void jump()
{
System.out.println("正在执行 jump 方法!");
}
public void run()
{
//调用 jump 方法,构造器初始化;
DogText d = new DogText();
d.jump();
System.out.println("正在执行 Run 方法");
}
public static void main(String[] args)
{
DogText d = new DogText();
d.run();
}
}
En el ejemplo anterior, el método jump () de la clase se llama en el método run (). Aquí, el objeto DogText se crea para llamar a este método, pero en la función main (), se crea otra referencia de objeto DogText. ;
El método de llamada anterior puede funcionar normalmente, pero el método de ejecución de código es: 1. En el primer método run (), llamar a otros métodos (como el método jump ()) debe crear un objeto DogText ()? 2. ¿Es necesario volver a crear un objeto DogText ()?
Para la primera pregunta, sí, debe usar un objeto para llamar a un método modificado no estático , por lo que debe crear un nuevo objeto, 2, no necesariamente, porque se ha creado un objeto cuando se llama a la función principal run () , continuar Se puede llamar directamente cuando está en uso y está bien.
El método run () llama al método jump (), que se puede utilizar directamente para obtener el objeto del método en run (), y se puede satisfacer con la palabra clave this
public void run()
{
//this 引用调用 run()的对象
this.jump();
System.out.println("正在执行 Run 方法");
}
En Java, un método en una clase puede llamar directamente a otro método, y este prefijo se puede omitir, por lo que el método run () se puede reescribir como:
public void run()
{
//this 引用调用 run()的对象
this.jump();
System.out.println("正在执行 Run 方法");
}
La mayoría de las veces, cuando un método llama a otro método, el efecto de agregar o no agregar esto a la variable de instancia es el mismo, aunque esto se omite, el objeto que llamó al método todavía existe;
Una cosa a tener en cuenta aquí es que los métodos modificados estáticos no pueden usar la palabra clave this, porque esta palabra clave no puede apuntar a un objeto adecuado; por lo tanto, los métodos modificados estáticos no pueden usar esta referencia y solo pueden ser llamados por objetos, lo que da como resultado Requisitos de Java Grammar; los miembros estáticos no pueden acceder directamente a los miembros estáticos ;
El caso es el siguiente:
public class DogText {
//定义一个 jump 方法
public void jump()
{
System.out.println("正在执行 jump 方法!");
}
public void run()
{
//调用 jump 方法,构造器初始化;
DogText d = new DogText();
d.jump();
System.out.println("正在执行 Run 方法");
}
public static void main(String[] args)
{
//run() 程序报错,无法从静态上席文引用非静态
DogText d = new DogText();
d.run();
}
}
Pequeño resumen
Los anteriores son algunos usos de la palabra clave this, puedo resumirlo en dos puntos:
- 1. Generalmente, el método en la clase puede llamar directamente a otro método y variable miembro, esto se puede agregar o no, y se refiere al objeto;
- 2. El método de modificación estático no puede llamar al método de modificación no estático y el constructor necesita construir un nuevo objeto antes de llamarlo.
El artículo se publicó por primera vez en la cuenta pública para entusiastas del desarrollo de Java.