Últimamente aprendimos sobre el Palabra clave estática en Java, que hace que los métodos estén disponibles para invocar incluso antes de crear objetos. Muy a menudo, un método necesita referirse al objeto que lo invocó. Java ha creado una función / palabra clave ‘esta’Para lograr el deseado. ‘esta"Se puede usar dentro de cualquier método para referirse al objeto actual. ‘esta"Es siempre una referencia al objeto en el que se invocó el método.
Java This
De nuevo, a veces, cuando el parámetro formal tiene el mismo nombre que una variable de instancia, el parámetro formal oculta la variable de instancia. Para evitar ocultar variables de instancia ‘esta’Se utiliza para referirse a la variable de instancia. Entonces 'esta"Se utiliza para resolver las colisiones de espacio de nombres que pueden ocurrir entre variables de instancia y parámetros formales.
Programa
class Employee{ String employeeName; String employeeAddress; double salary; Employee(String employeeName,String employeeAddress,double salary){ this.employeeName = employeeName; this.employeeAddress = employeeAddress; this.salary = salary; } void setSalary(double salary){ this.salary = salary; } void showDetails(){ System.out.println("Employee's Name: "+employeeName); System.out.println("Employee's Address: "+employeeAddress); System.out.println("Employee's salary: "+salary); } } class ThisDemo{ public static void main(String args[]){ String name = "Ricardo Kaka"; String address = "South Africa"; double salary = 26389.92; Employee employee = new Employee(name,address,salary); System.out.println("Employee Details:"); System.out.println("--------------------------"); employee.showDetails(); System.out.println(); System.out.println("Modified Employee Details:"); System.out.println("--------------------------"); salary = 34902.25; employee.setSalary(salary); employee.showDetails(); } }
Salida
Explicación del código y salida de Java
En el código hemos escrito uno parametrizadoconstructor donde los parámetros formales tienen el mismo nombre que el nombre de las variables de instancia de la misma clase. Ahora está claro que los parámetros formales del constructor parametrizado ocultarán las variables de instancia de la clase Employee. Para resolver el problema hemos usado ‘esta'Antes de las variables de instancia durante la inicialización. Lo mismo es cierto para el setSalary () método que se utiliza para actualizar el salario. Aquí también el parámetro formal para setSalary () tiene el mismo nombre que el nombre de la variable de instanciasalario. Por lo tanto, existe una colisión en el espacio de nombres, el salario de parámetro formal ocultará el salario variable de instancia. Para evitar este problema al inicializar la variable de instancia ‘esta"Debe ir precedido. Veremos un pequeño programa cómo el parámetro formal oculta la variable de instancia si ambos tienen el mismo nombre.
class Employee{ double salary; int age; Employee(double salary){ salary = salary; } Employee(double salary,int age){ this.salary = salary; this.age = age; } void showDetails(){ System.out.println("Salary: "+salary); } } class HideDemo{ public static void main(String args[]){ Employee emp = new Employee(23678.88); System.out.println("emp"); System.out.println("---"); emp.showDetails(); Employee employee = new Employee(23678.88,21); System.out.println("n"); System.out.println("employee"); System.out.println("--------"); employee.showDetails(); } }
Salida
En el primer caso no hemos usado ‘esta"Aunque hubo una colisión de espacio de nombresentre el parámetro formal del constructor y la variable de instancia de la clase Employee, mientras tanto el parámetro formal ha ocultado la variable de instancia. Pero en el segundo caso, como hemos usado "esta"Antes de la variable de instancia durante la inicialización, esto se refería a la variable de instancia y, mientras tanto, obtuvimos el valor original del salario que se aprobó durante la inicialización.
Parpadeará en
- ‘esta"Siempre devuelve la referencia al objeto actual.
- Se puede usar dentro de métodos y constructores.
- ‘esta"No se puede hacer referencia en contexto estático.
Comentarios