کلیدواژه this و super
جمعه, ۴ شهریور ۱۴۰۱، ۰۴:۰۲ ب.ظ
public class NewClass { int x = 20; class A { int x = 10; void method1(int x) { System.out.println("x = " + x); System.out.println("this.x = " + this.x); System.out.println("NewClass.this.x = " + NewClass.this.x); } } public static void main() { NewClass nc = new NewClass(); A a = nc.new A(); a.method1(1); } } //prints: //x = 1 //this.x = 10 //NewClass.this.x = 20
زمانی از «دیس» استفاده میشود که دو تا متغیر داریم یکی درون تابع و دیگری درون کلاس (یعنی یک فیلد) که هر دو همنام هستند. اگر نام متغیر را به صورت ساده بیاوریم به متغیر درون تابع اشاره میشود و اگر نام متغیر را به همراه «دیس» بیاوریم به فیلد اشاره میشود.
----------------------------
کلیدواژه سوپر
زمانی از کلیدواژه سوپر استفاده میکنیم که یک متغیر یا متد در کلاس پدر و پسر با «یک نام» وجود داشته باشد. در این صورت برای این که به کامپایلر بگوییم که قصد استفاده از متغیر یا متد پدر را داریم از واژه سوپر استفاده میکنیم.
همچنین برای اجرای کانستراکتور پدر نیز میتوانیم از این دستور استفاده کنیم:super();
نکته: اگر این دستور در متن برنامه ما نیامده باشد کامپایلر خودش این را در آغاز سازنده ما میآورد!
۰۱/۰۶/۰۴