JavaRush /جاوا بلاگ /Random-SD /هي لفظ {مثالن ۾}

هي لفظ {مثالن ۾}

گروپ ۾ شايع ٿيل
JavaRush تي، شاگردن کي لفظي لفظ سان متعارف ڪرايو ويو آهي لفظي طور تي پهرين ليڪچرن کان this. ۽ وقت سان گڏ اهو واضح ٿئي ٿو ته ان جو مطلب ڇا آهي. پر ڪيترائي، پوئتي ڏسي، شايد ايمانداري سان پاڻ کي چوندا آهن ته هڪ ڊگهي وقت تائين اهي هن اهم لفظ جي زين کي محسوس نه ڪري سگهيا آهن. هن آرٽيڪل ۾ اسان انهن لاءِ لفظ استعمال ڪرڻ بابت رازن جو پردو هٽائي رهيا آهيون thisجيڪي اڃا تائين ان کي سمجهي نٿا سگهن... ڀليڪار! جيڪڏھن توھان کڻو ٿا Schildt's Java reference book , صفحي 171 تي توھان پڙھندؤ ته ھڪڙو لفظ thisگھربل آھي ته جيئن ھڪڙو طريقو ان اعتراض جو حوالو ڏئي سگھي جنھن ان کي سڏيو آھي. اهو ٿي سگهي ٿو اصل ۾ ان جي پڇاڙي. پر اسان کي تفصيل جي ضرورت آهي. هي لفظ {مثالن ۾} - 1ضابطي جي طور تي، thisان کي ٻن صورتن ۾ استعمال ڪيو وڃي ٿو:
  1. جڏهن هڪ ڪلاس مثال متغير ۽ هڪ طريقو / تعمير ڪندڙ متغير جو نالو ساڳيو آهي؛
  2. جڏهن توهان کي هڪ قسم جي تعمير ڪندڙ کي سڏڻ جي ضرورت آهي (مثال طور، هڪ ڊفالٽ يا پيٽرولر ٿيل تعمير ڪندڙ) ٻئي کان. اهو پڻ هڪ واضح تعمير ڪندڙ ڪال سڏيو ويندو آهي.
اهو ئي آهي، گهڻو ڪجهه نه، صرف ٻه مثال جتي هي خوفناڪ لفظ استعمال ڪيو ويو آهي. هاڻي اچو ته انهن ٻنهي حالتن کي مثالن سان ڏسو.

مثال هڪ - مثال متغير ۽ طريقو متغير جو نالو ساڳيو آهي

اچو ته چئون ته اسان وٽ هڪ ڪلاس آهي Humanجنهن لاءِ "نالو" فيلڊ جي وضاحت ڪئي وئي آهي: هي لفظ {مثالن ۾} - 2اچو ته nameمتغير لاءِ هڪ سيٽر ٺاهيو (سيٽر ڪافي ڪم ڪري رهيو آهي ۽ هتي ڪا به چال ناهي): مهرباني ڪري نوٽ ڪريو ته اسان متغير هي لفظ {مثالن ۾} - 3کي طريقي سان setNameمنتقل ڪري رهيا آهيون (setter. ) String newName. اسان هڪ نئون متغير متعارف ڪرايو ۽ (عام طور تي) ان کي سڏي سگهون ٿا جيڪو اسان چاهيون ٿا، ڇاڪاڻ ته اهو صرف طريقي جي {curly braces} ۾ نظر ايندو setName. نوٽ ڪريو ته سيٽر ۾ ھڪڙي لائن آھي:
name = newName;
اھو آھي، حقيقت ۾، اسان ھڪڙو نئون متغير متعارف ڪرايو newName۽ ان کي ھڪڙي متغير کي مقرر ڪيو جيڪو اڳ ۾ ئي ڪلاس ۾ موجود آھي name. گھڻن پروگرامرن سوچيو ته اھو عجيب آھي ته ھڪڙي نئين نالي سان متغير متعارف ڪرائڻ جيڪڏھن آخر ۾ اسان ساڳي شيء بابت ڳالھائي رھيا آھيون. ڪلاس ۾ نالو بابت Human. تنهن ڪري، ٻولي ڊولپرز ان کي هڪ متغير نالو استعمال ڪرڻ لاء آسان بڻائڻ بابت سوچيو. ٻين لفظن ۾، هڪ متغير لاء ٻه نالا ڇو آهن ان جو مطلب ساڳيو شيء آهي. اهو آهي، مان ڪجهه هن طرح ڪرڻ چاهيان ٿو: هي لفظ {مثالن ۾} - 4پر هن معاملي ۾ هڪ مسئلو پيدا ٿئي ٿو . اسان وٽ ھاڻي ٻه متغير آھن جن جو نالو ساڳيو آھي. هڪ String nameطبقي سان تعلق رکي ٿو Human، ۽ ٻيو String nameان جي طريقي سان setName. تنهن ڪري، جاوا مشين کي خبر ناهي ته ڪهڙو متغير توهان جو مطلب آهي جڏهن توهان هڪ سيٽر ۾ اسٽرنگ لکندا آهيو:
name = name;
جاوا سڀ کان ويجھو وٺي ٿو - nameطريقي مان setName:
هي لفظ {مثالن ۾} - 5
۽ اهو ظاهر ٿئي ٿو ته توهان صرف nameهن طريقي سان هڪ متغير کي هڪ قدر تفويض ڪريو، ان کي. جنهن جو يقيناً ڪو به مطلب ناهي. تنهن ڪري، ڪنهن طريقي جي ضرورت هئي ته nameهڪ ڪلاس کان هڪ متغير کي ميٿڊ مان Humanهڪ متغير کان ڌار ڪرڻ لاء، هن مسئلي کي حل ڪرڻ لاء، لفظ متعارف ڪرايو ويو ، جيڪو هن صورت ۾ ظاهر ڪندو ته اهو ضروري آهي ته هڪ ميٿڊ جي نه پر متغير کي سڏڻ ضروري آهي. هڪ طبقي جو : namesetNamethisHuman
هي لفظ {مثالن ۾} - 6
اهو آهي، thisاهو سڏيندڙ اعتراض ڏانهن اشارو ڪندو، جيئن آرٽيڪل جي شروعات ۾ چيو ويو آهي. نتيجي طور، شخص جو نالو setNameسيٽر ذريعي ٺاهيل اعتراض تي مقرر ڪيو ويندو. ھيٺ ڏنل ڪوڊ آھي بغير لفظ جي استعمال ڪرڻ جي this. ڪوڊ هڪ طبقي اعتراض ٺاهي ٿو Human۽ ان کي هڪ نالو ڏئي ٿو:
هي لفظ {مثالن ۾} - 7
۽ هيٺ ڏنل لفظ سان پروگرام ڪوڊ آهي 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اهو خوفناڪ ناهي.
هي لفظ {مثالن ۾} - 9
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION