المعنى الأساسي
this تشير إلى الكائن الحالي الذي استدعى Instance Method. كتابة this.name تحدد حقل name داخل ذلك الكائن.
this & Shadowing
this تشير إلى الكائن الحالي الذي استدعى Instance Method. كتابة this.name تحدد حقل name داخل ذلك الكائن.
إذا كان اسم Parameter هو name، فهو يحجب اسم الحقل داخل Method. السطر name = name; يقرأ Parameter ويسند إليه نفسه؛ الحقل لا يتغير.
this.name = name; تعني ضع قيمة Parameter الموجود يمينًا في حقل الكائن الموجود يسارًا. وجود this هنا يميز الحقل بوضوح.
سمّ Parameter باسم مختلف مثل n، ثم اكتب name = n;. في هذه الحالة name غير محجوب، لذلك يشير إلى الحقل حتى دون this.
public class TestClass {
public static void main(String[] args) {
Employee e1 = new Employee();
e1.setName("Ali");
System.out.println(e1.getName());
}
}public class Employee {
private String name = "Original";
public String getName() { return name; }
public void setName(String name) {
this.name = name;
}
}name = name قد يترجم دون خطأ لكنه لا يحقق التعديل المطلوب. هذا Logical Error، وليس Syntax Error.
بدّل صيغ Setter الثلاث، ثم افتح Employee.java وشوف السطر نفسه. غيّر الاسم وقارن القيمة المخزنة بعد كل صيغة.
محاكاة لهذا المثال المحدد، وليست تشغيلًا لكود Java عشوائي.