În ultimul timp am aflat despre Cuvânt cheie statică în Java, care oferă metodele disponibile pentru invocarea chiar înainte de a crea obiecte. Foarte des, o metodă trebuie să se refere la obiectul care l-a invocat. Java a creat o caracteristică / cuvânt cheie „acest„Pentru a-l atinge pe cel dorit. „acest”Poate fi utilizat în orice metodă pentru a face referire la obiectul curent. „acest„Este întotdeauna o referire la obiectul pe care a fost invocată metoda.
Java Aceasta
Din nou, uneori, când parametrul formal are același nume ca o variabilă de instanță, atunci parametrul formal ascunde variabila de instanță. Pentru a evita ascunderea variabilelor de instanță "acest”Este utilizat pentru a face referire la variabila de instanță. Asa de 'acest”Este utilizat pentru a rezolva coliziunile spațiului de nume care pot apărea între variabilele de instanță și parametrii formali.
Program
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(); } }
producție
Explicația Codului și a ieșirii Java
În cod am scris unul parametrizatconstructor unde parametrii formali au același nume ca și numele variabilelor de instanță ale aceleiași clase. Acum este clar că parametrii formali ai constructorului parametrizat vor ascunde variabilele de instanță ale clasei Angajat. Pentru a rezolva problema am folosit „acest”Înainte de variabilele instanței în timpul inițializării. Același lucru este valabil și pentru setSalary () metodă folosită pentru actualizarea salariului. Aici, de asemenea, parametrul formal pentru setSalary () are același nume ca numele variabilei de instanțăsalariu. Așadar, există o coliziune în spațiul de nume, salariul formal al parametrilor va ascunde salariul variabil de instanță. Pentru a evita această problemă în timp ce inițializează variabila de instanță „acest„Trebuie să fie precedat. Vom vedea un mic program cum parametrul formal ascunde variabila de instanță dacă ambele au același nume.
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(); } }
producție
În primul caz, nu am folosit „acest„Chiar dacă a existat o coliziune în spațiul de numeîntre parametrul formal al constructorului și variabila de instanță a clasei Angajat, între timp parametrul formal a ascuns variabila de instanță. Dar în cel de-al doilea caz, așa cum am folosit ”acest„Înainte de variabila de instanță în timpul inițializării, aceasta se referea la variabila de instanță și între timp am obținut valoarea inițială a salariului trecut în timpul inițializării.
Flash Pornit
- „acest”Întoarce întotdeauna referința la obiectul curent.
- Poate fi utilizat în metode și constructori.
- „acest”Nu se poate face referire în context static.
Comentarii