JavaRush /جاوا بلاگ /Random-UR /مطلوبہ الفاظ یہ {مثالوں میں}

مطلوبہ الفاظ یہ {مثالوں میں}

گروپ میں شائع ہوا۔
JavaRush میں، طلباء کو پہلے لیکچرز سے لفظی طور پر کلیدی لفظ سے متعارف کرایا جاتا ہے this۔ اور وقت کے ساتھ ساتھ یہ واضح ہو جاتا ہے کہ اس کا کیا مطلب ہے۔ لیکن بہت سے لوگ، پیچھے مڑ کر، شاید ایمانداری سے اپنے آپ سے کہیں گے کہ ایک طویل عرصے تک وہ اس کلیدی لفظ کے زین کو محسوس نہیں کر سکے۔ اس مضمون میں ہم ان لوگوں کے لیے مطلوبہ الفاظ کے استعمال کے راز سے پردہ اٹھاتے ہیں thisجو ابھی تک اس کا پتہ نہیں لگا سکتے... خوش آمدید! اگر آپ Schildt کی Java حوالہ کتاب اٹھاتے ہیں ، صفحہ 171 پر آپ پڑھیں گے کہ ایک کلیدی لفظ کی thisضرورت ہے تاکہ کوئی طریقہ اس چیز کا حوالہ دے سکے جس نے اسے کہا ہے۔ یہ اصل میں اس کا خاتمہ ہوسکتا ہے۔ لیکن ہمیں تفصیلات کی ضرورت ہے۔ مطلوبہ الفاظ یہ {مثالوں میں} - 1ایک اصول کے طور پر، یہ دو صورتوں میںthis استعمال کیا جانا چاہئے :
  1. جب کلاس انسٹینس متغیر اور میتھڈ/کنسٹرکٹر متغیر کا ایک ہی نام ہوتا ہے۔
  2. جب آپ کو ایک قسم کے کنسٹرکٹر کو کال کرنے کی ضرورت ہوتی ہے (مثال کے طور پر، ڈیفالٹ یا پیرامیٹرائزڈ کنسٹرکٹر) دوسرے سے۔ اسے ایک واضح کنسٹرکٹر کال بھی کہا جاتا ہے۔
بس اتنا ہی نہیں، صرف دو مثالوں میں جہاں یہ خوفناک مطلوبہ لفظ استعمال ہوا ہے۔ اب آئیے ان دونوں صورتوں کو مثالوں کے ساتھ دیکھتے ہیں۔

مثال ایک - مثال کے متغیر اور طریقہ متغیر کا ایک ہی نام ہے۔

ہم کہتے ہیں کہ ہمارے پاس ایک کلاس ہے Humanجس کے لیے "نام" فیلڈ کی تعریف کی گئی ہے: مطلوبہ الفاظ یہ {مثالوں میں} - 2آئیے nameمتغیر کے لیے ایک سیٹر بنائیں (سیٹر کافی کام کر رہا ہے اور یہاں کوئی چال نہیں ہے): براہ کرم نوٹ کریں کہ ہم متغیر کو مطلوبہ الفاظ یہ {مثالوں میں} - 3طریقہ (setter) میں منتقل کر رہے ہیں۔ ) _ ہم نے ایک نیا متغیر متعارف کرایا اور (عام طور پر) اسے جو چاہیں کہہ سکتے ہیں کیونکہ یہ صرف طریقہ کے {کرلی منحنی خطوط وحدانی کے اندر ہی نظر آئے گا ۔ نوٹ کریں کہ سیٹر میں ایک لائن ہے: setNameString newNamesetName
name = newName;
یعنی حقیقت میں، ہم نے ایک نیا متغیر متعارف کرایا newNameاور اسے کلاس میں پہلے سے موجود متغیر کو تفویض کیا name۔ بہت سے پروگرامرز نے سوچا کہ نئے نام کے ساتھ متغیر متعارف کرانا عجیب ہے اگر آخر میں ہم ایک ہی چیز کے بارے میں بات کر رہے ہوں۔ کلاس میں نام کے بارے میں Human۔ لہذا، زبان کے ڈویلپرز نے ایک متغیر نام کو استعمال کرنے کے لئے آسان بنانے کے بارے میں سوچا. دوسرے الفاظ میں، متغیر کے دو نام کیوں ہیں جن کا مطلب ایک ہی چیز ہے۔ یعنی، میں کچھ اس طرح کرنا چاہوں گا: مطلوبہ الفاظ یہ {مثالوں میں} - 4لیکن اس صورت میں ایک مسئلہ پیدا ہوتا ہے ۔ اب ہمارے پاس دو متغیرات ہیں جن کا نام ایک ہی ہے۔ ایک String nameکا تعلق کلاس سے ہے Humanاور دوسرا String nameاس کے طریقہ کار سے setName۔ لہذا، جاوا مشین نہیں جانتی ہے کہ جب آپ سیٹر میں سٹرنگ لکھتے ہیں تو آپ کا مطلب کون سا متغیر ہوتا ہے:
name = name;
جاوا قریب ترین لیتا ہے - nameطریقہ سے setName:
مطلوبہ الفاظ یہ {مثالوں میں} - 5
اور یہ پتہ چلتا ہے کہ آپ nameاس طریقے سے کسی متغیر کو صرف ایک قدر تفویض کرتے ہیں۔ جس کا یقیناً کوئی مطلب نہیں۔ اس لیے کسی متغیر کو nameکلاس سے متغیر کو Humanمیتھڈ nameسے الگ کرنے کے لیے کچھ طریقہ درکار تھا setName۔ اس مسئلے کو حل کرنے کے لیے کلیدی لفظ متعارف کرایا گیا تھا this، جو اس صورت میں اس بات کی نشاندہی کرے گا کہ متغیر کو میتھڈ سے نہیں بلکہ متغیر کو کال کرنا ضروری ہے۔ ایک کلاس کا Human:
مطلوبہ الفاظ یہ {مثالوں میں} - 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