JavaRush تي، شاگردن کي لفظي لفظ سان متعارف ڪرايو ويو آهي لفظي طور تي پهرين ليڪچرن کان
۽ اهو ظاهر ٿئي ٿو ته توهان صرف
اهو آهي،
۽ هيٺ ڏنل لفظ سان پروگرام ڪوڊ آهي
this
. ۽ وقت سان گڏ اهو واضح ٿئي ٿو ته ان جو مطلب ڇا آهي. پر ڪيترائي، پوئتي ڏسي، شايد ايمانداري سان پاڻ کي چوندا آهن ته هڪ ڊگهي وقت تائين اهي هن اهم لفظ جي زين کي محسوس نه ڪري سگهيا آهن. هن آرٽيڪل ۾ اسان انهن لاءِ لفظ استعمال ڪرڻ بابت رازن جو پردو هٽائي رهيا آهيون this
جيڪي اڃا تائين ان کي سمجهي نٿا سگهن... ڀليڪار! جيڪڏھن توھان کڻو ٿا Schildt's Java reference book , صفحي 171 تي توھان پڙھندؤ ته ھڪڙو لفظ this
گھربل آھي ته جيئن ھڪڙو طريقو ان اعتراض جو حوالو ڏئي سگھي جنھن ان کي سڏيو آھي. اهو ٿي سگهي ٿو اصل ۾ ان جي پڇاڙي. پر اسان کي تفصيل جي ضرورت آهي. ضابطي جي طور تي، this
ان کي ٻن صورتن ۾ استعمال ڪيو وڃي ٿو:
- جڏهن هڪ ڪلاس مثال متغير ۽ هڪ طريقو / تعمير ڪندڙ متغير جو نالو ساڳيو آهي؛
- جڏهن توهان کي هڪ قسم جي تعمير ڪندڙ کي سڏڻ جي ضرورت آهي (مثال طور، هڪ ڊفالٽ يا پيٽرولر ٿيل تعمير ڪندڙ) ٻئي کان. اهو پڻ هڪ واضح تعمير ڪندڙ ڪال سڏيو ويندو آهي.
مثال هڪ - مثال متغير ۽ طريقو متغير جو نالو ساڳيو آهي
اچو ته چئون ته اسان وٽ هڪ ڪلاس آهيHuman
جنهن لاءِ "نالو" فيلڊ جي وضاحت ڪئي وئي آهي: اچو ته name
متغير لاءِ هڪ سيٽر ٺاهيو (سيٽر ڪافي ڪم ڪري رهيو آهي ۽ هتي ڪا به چال ناهي): مهرباني ڪري نوٽ ڪريو ته اسان متغير کي طريقي سان setName
منتقل ڪري رهيا آهيون (setter. ) String newName
. اسان هڪ نئون متغير متعارف ڪرايو ۽ (عام طور تي) ان کي سڏي سگهون ٿا جيڪو اسان چاهيون ٿا، ڇاڪاڻ ته اهو صرف طريقي جي {curly braces} ۾ نظر ايندو setName
. نوٽ ڪريو ته سيٽر ۾ ھڪڙي لائن آھي:
name = newName;
اھو آھي، حقيقت ۾، اسان ھڪڙو نئون متغير متعارف ڪرايو newName
۽ ان کي ھڪڙي متغير کي مقرر ڪيو جيڪو اڳ ۾ ئي ڪلاس ۾ موجود آھي name
. گھڻن پروگرامرن سوچيو ته اھو عجيب آھي ته ھڪڙي نئين نالي سان متغير متعارف ڪرائڻ جيڪڏھن آخر ۾ اسان ساڳي شيء بابت ڳالھائي رھيا آھيون. ڪلاس ۾ نالو بابت Human
. تنهن ڪري، ٻولي ڊولپرز ان کي هڪ متغير نالو استعمال ڪرڻ لاء آسان بڻائڻ بابت سوچيو. ٻين لفظن ۾، هڪ متغير لاء ٻه نالا ڇو آهن ان جو مطلب ساڳيو شيء آهي. اهو آهي، مان ڪجهه هن طرح ڪرڻ چاهيان ٿو: پر هن معاملي ۾ هڪ مسئلو پيدا ٿئي ٿو . اسان وٽ ھاڻي ٻه متغير آھن جن جو نالو ساڳيو آھي. هڪ String name
طبقي سان تعلق رکي ٿو Human
، ۽ ٻيو String name
ان جي طريقي سان setName
. تنهن ڪري، جاوا مشين کي خبر ناهي ته ڪهڙو متغير توهان جو مطلب آهي جڏهن توهان هڪ سيٽر ۾ اسٽرنگ لکندا آهيو:
name = name;
جاوا سڀ کان ويجھو وٺي ٿو - name
طريقي مان setName
:
name
هن طريقي سان هڪ متغير کي هڪ قدر تفويض ڪريو، ان کي. جنهن جو يقيناً ڪو به مطلب ناهي. تنهن ڪري، ڪنهن طريقي جي ضرورت هئي ته name
هڪ ڪلاس کان هڪ متغير کي ميٿڊ مان Human
هڪ متغير کان ڌار ڪرڻ لاء، هن مسئلي کي حل ڪرڻ لاء، لفظ متعارف ڪرايو ويو ، جيڪو هن صورت ۾ ظاهر ڪندو ته اهو ضروري آهي ته هڪ ميٿڊ جي نه پر متغير کي سڏڻ ضروري آهي. هڪ طبقي جو : name
setName
this
Human
this
اهو سڏيندڙ اعتراض ڏانهن اشارو ڪندو، جيئن آرٽيڪل جي شروعات ۾ چيو ويو آهي. نتيجي طور، شخص جو نالو setName
سيٽر ذريعي ٺاهيل اعتراض تي مقرر ڪيو ويندو. ھيٺ ڏنل ڪوڊ آھي بغير لفظ جي استعمال ڪرڻ جي this
. ڪوڊ هڪ طبقي اعتراض ٺاهي ٿو Human
۽ ان کي هڪ نالو ڏئي ٿو:
this
:
public class Solution{
public static void main(String[] args) {
Human human1 = new Human();
human1.setName("Volodya");
human1.print();
}
}
class Human{
String name;
public String getName() {
return name;
}
public void setName(String name){
this.name = name;
}
void print(){
System.out.println(name);
}
}
اهڙيء طرح، اهو this
ساڳيو شيء کي ظاهر ڪرڻ لاء نئين متغير متعارف ڪرائڻ کان بچي ٿو، جيڪو اضافي متغيرن سان ڪوڊ کي گهٽ "اوور لوڊ ٿيل" بنائي ٿو.
مثال ٻه - ھن کي استعمال ڪندي واضح طور تي ھڪڙي ٺاھيندڙ کي سڏڻ لاءِ
ھڪڙي ٺاھيندڙ کي ٻئي کان سڏڻ ڪارائتو ٿي سگھي ٿو جڏھن توھان وٽ (غير معمولي طور تي) ڪيترائي ٺاھيندڙ آھن ۽ توھان نه ٿا چاھيو ته اڳ ۾ ڏنل شروعاتي ڪوڊ کي نئين ٺاھيندڙ ۾ ٺاھيندڙ ۾. مونجهارو؟ سڀ ڪجهه ايترو خوفناڪ ناهي جيترو اهو لڳي ٿو. هيٺ ڏنل ڪوڊ ڏسو، ان ۾ ٻه ڪلاس تعمير ڪندڙ آهنHuman
:
class Human{
int age;
int weight;
int height;
Human(int age, int weight){
this.age = age;
this.weight = weight;
}
Human(int age, int weight, int height){
//you call the constructor with two parameters
this(age, weight);
//and add the missing variable
this.height = height;
}
}
هتي اسان وٽ پهريان هڪ ٻه-پيراميٽر ٺاهيندڙ آهي جيڪو قبول ڪري ٿو int age
۽ int weight
. اچو ته اسان ان ۾ ڪوڊ جون ٻه لائينون لکيون:
this.age = age;
this.weight = weight;
۽ پوءِ انھن ھڪ ٻئي ٺاھيندڙ کي شامل ڪرڻ جو فيصلو ڪيو، ٽن پيرا ميٽرن سان، جيڪو، عمر ۽ وزن کان علاوه، اوچائي به وٺندو آھي. نئين تعمير ڪندڙ ۾ توهان هن کي لکي سگهو ٿا:
this.age = age;
this.weight = weight;
this.height = height;
پر انهي ڪوڊ کي ٻيهر ورجائڻ جي بجاءِ جيڪو توهان اڳ ۾ ئي هن تعمير ڪندڙ ۾ لکيو آهي، توهان هڪ لفظ استعمال ڪري سگهو ٿا this
واضح طور تي ڪنسٽرڪٽر کي ٻن پيرا ميٽرن سان سڏڻ لاءِ:
this(age, weight);
// and add the missing variable:
this.height = height;
تنهنڪري توهان قسم جي تعمير ڪندڙ کي ٽن پيٽرولن سان ٻڌائي رهيا آهيو:
- ھن ٺاھيندڙ کي سڏيو، جنھن جا ٻه پيرا ميٽر آھن.
- ۽ غائب متغير شامل ڪريو.
this
سڀني طريقن ڏانهن گذريو ويو آهي سواءِ جامد جي (ان ڪري ڇو ان کي this
اڪثر ڪري هڪ ضمني پيراميٽر سڏيو ويندو آهي) ۽ استعمال ڪري سگهجي ٿو اعتراض جي حوالي ڪرڻ لاءِ جنهن کي طريقو سڏيو وڃي ٿو. هن لفظ کان ڊڄڻ جي ڪا ضرورت ناهي، ڇاڪاڻ ته This
اهو خوفناڪ ناهي.
GO TO FULL VERSION