CodeGym /جاوا بلاگ /Random-SD /Java هي لفظ
John Squirrels
سطح
San Francisco

Java هي لفظ

گروپ ۾ شايع ٿيل
CodeGym تي، شاگردن کي متعارف ڪرايو ويو آهي جاوا ۾ هي لفظ لفظي طور تي پهرين سبق کان. وقت گذرڻ سان، ان جي معنيٰ پڌري ٿي. پر پوئتي ڏسندي، ڪيترائي ماڻهو شايد پاڻ کي تسليم ڪن ٿا ته هڪ ڊگهي وقت تائين اهي هن لفظ جي زين کي سمجهي نه سگهيا آهن. هي مضمون هر ڪنهن لاءِ هن لفظ جي رازن کان پردو هٽائي ڇڏيندو جيڪو اڃا تائين نه ڪري سگهيو آهي ... مون وٽ آهي توهان کي Schildt جا جاوا حوالو ، پوءِ صفحي 171 تي توهان ڏسي سگهو ٿا ته هي لفظ ھڪڙي طريقي جي ضرورت آھي ھڪڙي اعتراض جي حوالي ڪرڻ لاء جيڪو ان کي سڏيو ويندو آھي. اسان انهي سان سبق ختم ڪري سگهون ٿا. پر اسان کي تفصيل جي ضرورت آهي. ضابطي جي طور تي، توهان کي ٻن ڪيسن ۾ استعمال ڪرڻ جي ضرورت آهي:
  1. جڏهن هڪ مثال متغير ۽ طريقو / تعمير ڪندڙ متغير جو نالو ساڳيو آهي؛
  2. جڏهن توهان کي ڪنهن خاص قسم جي تعمير ڪندڙ کي سڏڻ جي ضرورت آهي (مثال طور، هڪ ڊفالٽ تعمير ڪندڙ يا پيرا ميٽرائيز تعمير ڪندڙ) ٻئي قسم جي تعمير ڪندڙ کان. اهو پڻ هڪ واضح تعمير ڪندڙ ڪال سڏيو ويندو آهي.
۽ اھو ان بابت آھي - اتي صرف ٻه ڪيس آھن جتي ھي خوفناڪ لفظ استعمال ڪيو ويو آھي. هاڻي اچو ته انهن ٻنهي صورتن کي مثالن ۾ ڏسو.

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

فرض ڪريو اسان وٽ ھڪڙو انساني طبقو آھي جيڪو ھڪڙي نالي جي فيلڊ کي بيان ڪري ٿو: اچو ته نالي جي متغير لاء ھڪڙو سيٽر ٺاھيو (سيٽر مڪمل طور تي ڪم ڪري ٿو - ھتي ڪو به پڪڙي نه آھي):
class Human {
    String name;


    public void setName(String newName) {
        name = newName;
    }
}
نوٽ ڪريو ته اسان String newName کي setName setter ميٿڊ ڏانھن منتقل ڪريون ٿا، اسان ھڪ نئون ويريئبل قرار ڏنو آھي ۽ اھو نالو ڏئي سگھون ٿا جيڪو اسان چاهيون ٿا، ڇاڪاڻ ته اھو صرف گھڙيل بريسس ({}) ۾ نظر ايندو جيڪي setName طريقي سان ڳنڍيندا آھن. نوٽ ڪريو ته سيٽر وٽ ھڪڙي لائن آھي:
name = newName;
هتي اسان هڪ نئون ويريبل متعارف ڪرايو آهي جنهن کي newName سڏيو ويندو آهي ۽ ان کي شئي جي موجوده نالي واري ويريبل سان لڳايو آهي. گھڻن پروگرامرن کي اھو عجيب لڳندو آھي ته ھڪڙي نئين نالي سان متغير متعارف ڪرايو جڏھن آخرڪار اسان ھڪڙي شيء بابت ڳالھائي رھيا آھيون. اهو آهي، اسان انساني طبقي ۾ نالو فيلڊ بابت ڳالهائي رهيا آهيون . اهو ئي سبب آهي ته جاوا جي تخليق ڪندڙن هڪ طريقو سوچيو ته آساني سان ساڳيو متغير نالو استعمال ڪرڻ لاء. ٻين لفظن ۾، هڪ ئي شيءِ کي ظاهر ڪندڙ متغير جا ٻه نالا ڇو آهن. ٻين لفظن ۾، اسان هن وانگر ڪجهه ڪرڻ چاهيون ٿا:
class Human {
    String name;


    public void setName(String name) {
        name = name;
    }
}
پر هتي اسان کي هڪ مسئلو آهي . اسان وٽ هاڻي ساڳئي نالي سان ٻه متغير آهن. هڪ اسٽرنگ جو نالو انساني طبقي سان تعلق رکي ٿو ، جڏهن ته ٻيو اسٽرنگ نالو ان جي setName طريقي سان تعلق رکي ٿو . نتيجي طور، JVM کي خبر نه پوندي ته توهان ڪهڙي متغير جو حوالو ڏئي رهيا آهيو جڏهن توهان هيٺ ڏنل لائن لکندا آهيو سيٽر ۾:
name = name;
جاوا فرض ڪري ٿو توھان جو مطلب سڀ کان ويجھو نالو متغير آھي، يعني ھڪڙو setName طريقي مان: هي لفظ (مثالن سان) - 3تنھنڪري اھو معلوم ٿئي ٿو ته توھان صرف طريقي جي نالي جي متغير کي پاڻ کي تفويض ڪري رھيا آھيو. جنهن جو يقيناً ڪو به مطلب ناهي. تنهن ڪري، ٻولي کي ڪجهه طريقي جي ضرورت هئي ته انساني طبقي جي نالي جي متغير کي نالي جي متغير کان setName طريقي ۾ فرق ڪرڻ لاء . اهو مسئلو هن لفظ کي متعارف ڪرائڻ سان حل ڪيو ويو ، جيڪو هن صورت ۾ ظاهر ڪري ٿو ته توهان انساني طبقي جي هڪ مثال سان لاڳاپيل متغير جو حوالو ڏيڻ جو ارادو ڪيو، نه ته طريقي سان متغير: هي لفظ (مثالن سان) - 4ٻين لفظن ۾، اهو سڏيندڙ اعتراض ڏانهن اشارو ڪري ٿو، جيئن اسان مضمون جي شروعات ۾ ذڪر ڪيو آهي. نتيجي طور، setName طريقو ٺاهيل اعتراض تي شخص جو نالو مقرر ڪري ٿو. هيٺ ڏنل آهي پروگرام جو ڪوڊ بغير هي لفظ استعمال ڪرڻ کان سواءِ. ڪوڊ هڪ انساني شئي ٺاهي ٿو ۽ ان کي هڪ نالو تفويض ڪري ٿو: ۽ هتي هنهي لفظ (مثالن سان) - 5 لفظ سان ڪوڊ آهي :
public class Solution {
    public static void main(String[] args) {
        Human human1 = new Human();
        human1.setName("Vinny");
        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);
    }
}
اهڙيء طرح، هي اسان کي نئين متغير متعارف ڪرائڻ کان پاسو ڪرڻ جي اجازت ڏئي ٿو ساڳئي شيء کي ظاهر ڪرڻ لاء، ڪوڊ صاف ڪرڻ ۽ اضافي متغيرن سان گهٽ بي ترتيب.

مثال 2: هن کي استعمال ڪندي هڪ واضح تعمير ڪندڙ ڪال لاءِ

ھڪڙي ٺاھيندڙ کي ٻئي کان سڏڻ ڪارائتو ٿي سگھي ٿو جڏھن توھان وٽ (غير معمولي طور تي ڪافي) گھڻا ٺاھيندڙ آھن ۽ توھان نٿا چاھيو ته نئين ٺاھيندڙ کي نقل ڪرڻ لاءِ شروعاتي ڪوڊ اڳ ۾ مختلف ٺاھيندڙ ۾ لکيل آھي. مونجهارو؟ اهو ايترو خوفناڪ ناهي جيترو اهو لڳي ٿو. هيٺ ڏنل ڪوڊ ڏسو. ان ۾ انساني طبقي لاءِ ٻه ٺاھيندڙ آھن :
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) {
        // Call the constructor with two parameters
        this(age, weight);
        // and then initialize 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(age, weight);
// and then initialize the missing variable:
this.height = height;
اهو ائين آهي ڄڻ ته اسان ٽن پيٽرولر تعمير ڪندڙ کي چئي رهيا آهيون:
  • ھن ٻئي ٺاھيندڙ کي ڪال ڪريو جنھن ۾ ٻه پيرا ميٽر آھن
  • ۽ پوء ٻيو variable شامل ڪريو.
اهو سڀ آهي =). آخرڪار، اسان ياد رکون ٿا ته جاوا ۾ هي لفظ صرف طريقن ۽ تعمير ڪندڙن ۾ استعمال ٿيندو آهي. پر اهو واضح طور تي سڀني غير جامد طريقن ڏانهن منتقل ڪيو ويو آهي (ان ڪري اهو اڪثر ڪري هڪ ضمير پيٽرولر سڏيو ويندو آهي) ۽ استعمال ڪري سگهجي ٿو اعتراض جي حوالي ڪرڻ لاء جنهن کي طريقو سڏيو ويندو آهي. هن لفظ کان نه ڊڄو، ڇو ته هي خوفناڪ نه آهي.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION