JavaRush /جاوا بلاگ /Random-SD /جاوا ۾ ھن ۽ سپر لفظن جي وچ ۾ فرق
grishin
سطح
Харьков

جاوا ۾ ھن ۽ سپر لفظن جي وچ ۾ فرق

گروپ ۾ شايع ٿيل
this۽ superجاوا ۾ ٻه خاص لفظ آهن جيڪي ڪلاس ۽ ان جي سپر ڪلاس جي موجوده مثال جي نمائندگي ڪن ٿا. جاوا پروگرامر اڪثر ڪري انهن لفظن کي پريشان ڪندا آهن ۽ انهن جي خاص خاصيتن جي باري ۾ ٿورو شعور ڏيکاريندا آهن، جيڪي اڪثر جاوا ڪور انٽرويوز ۾ پڇيا ويندا آهن. مثال طور، ٻه سوال جيڪي فوري طور تي ذهن ۾ اچن ٿا، بابت آهن this۽ super، ڇا اهو ممڪن آهي ته جاوا ۾ ڪنهن لفظ کي مختلف معنيٰ ڏني وڃي this؟ this۽ ڪي ورڊ ۽ جاوا ۾ ڇا فرق آهي super. خبر نه آهي؟ خير، مان هتي جواب نه ڏئي رهيو آهيان - اهو مضمون جي آخر ۾ ڳولي سگهجي ٿو. جاوا ۾ هن ۽ سپر لفظن جي وچ ۾ فرق - 1تنهن ڪري، جيئن مون شروع ۾ چيو، جاوا ۾ this۽ وچ ۾ بنيادي فرق اهو آهي ته هڪ طبقي جو موجوده مثال نمائندگي ڪري ٿو، جڏهن ته والدين طبقي جو موجوده مثال نمائندگي ڪري ٿو. هتي متغير استعمال ڪرڻ جو هڪ مثال آهي ۽ - توهان شايد اڳ ۾ ئي ڏٺو آهي مثالن جي تعمير ڪندڙن کي سڏڻ جا هڪ ٻئي کان، جنهن کي سڏيو ويندو آهي. هڪ زنجير ۾ تعمير ڪندڙن کي سڏڻ، اهو ممڪن آهي لفظن جي استعمال ذريعي ۽ . ڪلاس جي اندر، ان جي no-argument Constructor سڏڻ لاءِ، استعمال ڪيو ويندو آهي ، جڏهن ته اهو استعمال ڪيو ويندو آهي no-argument Constructor کي سڏڻ لاءِ، يا جيئن ان کي سڏيو ويندو آهي، پيرن ڪلاس جو ڊفالٽ ڪنسٽرڪٽر. اهڙيءَ طرح، هن طريقي سان توهان نه رڳو بنا ڪنهن دليل جي، پر ڪنهن ٻئي ڪنسٽرڪٽر کي به ان کي مناسب پيرا ميٽرز پاس ڪري سڏي سگهو ٿا. اسان جلد ئي هن استعمال جو هڪ مثال ڏسندا . جاوا ۾ پڻ اهي ڪلاس مثال ۽ ان جي والدين جي متغير تائين رسائي لاءِ استعمال ڪيا ويندا آهن. حقيقت ۾، اهي اڳياڙين کان سواءِ پهچ سگھجن ٿا ۽ ، پر صرف ان صورت ۾ جڏهن موجوده بلاڪ ۾ اهڙا متغير ٻين متغيرن سان اوورليپ نه ٿين، يعني. جيڪڏهن ان ۾ ساڳيا نالن سان مقامي متغير شامل نه آهن، ٻي صورت ۾ توهان کي اڳياڙين سان نالا استعمال ڪرڻا پوندا، پر اهو مسئلو ناهي، ڇاڪاڻ ته هن فارم ۾ اهي اڃا به وڌيڪ پڙهڻ لائق آهن. هن طريقي جو هڪ شاندار مثال ان کي استعمال ڪرڻ آهي هڪ تعمير ڪندڙ اندر جيڪو هڪ پيٽرولر وٺي ٿو ساڳئي نالي سان مثال متغير. بعد ۾ آرٽيڪل ۾ اسان اهو معلوم ڪنداسين ته ٻيا ڪهڙا فرق آهن ۽ جي وچ ۾ ، ۽ انهن جي استعمال جا ڪجهه مثال ڏسو. superthissuperthissuperthissuperthis()super()thissuperthissupersuperthisthissuperthis

هي ۽ سپر ڪيئن هڪجهڙا آهن

thisلفظن ۽ لفظن جي وچ ۾ فرق کي ڏسڻ کان اڳ super، اچو ته انهن مان ڪجهه هڪجهڙائي ڏسو:
  1. ٻئي this، ۽ superغير جامد متغير آهن، تنهنڪري اهي جامد حوالي سان استعمال نٿا ڪري سگهجن، جنهن جو مطلب آهي ته اهي مکيه طريقي ۾ استعمال نٿا ڪري سگهن. انهي جي نتيجي ۾ هڪ مرتب وقت جي غلطي ٿيندي "هڪ غير جامد متغير thisهڪ جامد حوالي سان حوالو نٿو ڪري سگهجي". ساڳي شيء ٿئي ٿي جيڪڏهن توهان مکيه طريقي سان لفظ استعمال ڪريو ٿا super.

  2. ٻئي this، ۽ superاستعمال ڪري سگھجن ٿا ڪنسٽرڪٽرز اندر ٻين ڪنسٽرڪٽرز کي زنجير ۾ سڏڻ لاءِ، مثال طور، this() ۽ super() ڪنسٽرڪٽر کي ڪال ڪريو بغير وراثت ۽ والدين طبقن جي دليلن کان سواءِ.
هيٺ ڏنل مثال ۾، اسان پهريون ڀيرو هڪ ڪال پاس ڪريون ٿا هڪ غير-دليل ڪنسٽرڪٽر کان ڪلاس B جي هڪ ئي ڪلاس B جي ڪنسٽرڪٽر کي جيڪو هڪ واحد پيراميٽر وٺي ٿو قسم جو String، جيڪو بدلي ۾ super("")سڏي ٿو ون-آرگيومينٽ ڪنسٽرڪٽر کي سپر ڪلاس مان.
class A{

    A(){
        System.out.println("Конструктор без аргументов класса A");
    }

    A(String args){
        System.out.println("Конструктор с одним аргументом класса A");
    }
}

class B extends A{

   B(){
        this(""); // вызов конструктора с одним аргументом класса B
        System.out.println("Конструктор без аргументов класса B");
    }

   B(String args){
        super(""); // вызов конструктора с одним аргументом класса A
        System.out.println("Конструктор с одним аргументом класса B");
    }
}

// Тест-класс и вывод
public class Test {

    public static void main(String args[]) {
       B b = new B();
    }

}
آئوٽ: ڪلاس A جو ھڪڙو دليل ٺاھيندڙ ڪلاس بي جو ھڪڙو دليل ٺاھيندڙ ڪلاس بي جو ڪو دليل ٺاھيندڙ
  1. constructor جي اندر this، ۽ superٻين سڀني اظهارن جي مٿان ظاهر ٿيڻ گهرجي، بلڪل شروعات ۾، ٻي صورت ۾ مرتب ڪندڙ هڪ غلطي پيغام جاري ڪندو. جنهن مان اهو معلوم ٿئي ٿو ته هڪ تعمير ڪندڙ ٻنهي تي مشتمل نه ٿو ٿي سگهي this()، ۽ super().

سپر ۽ هن جي وچ ۾ فرق

ھاڻي اسان ڄاڻون ٿا ته لفظ ڪيئن استعمال ڪجي super۽ thisسمجھو ته انھن جي ضرورت ڇو آھي. پر انهن لفظن کي استعمال ڪرڻ لاءِ هڪ ٻيو آپشن آهي جنهن جو مون ذڪر نه ڪيو آهي - اندروني طبقن ۾، جتي انهن جي مدد سان اوور نوٽشن فارم استعمال ڪندي ٻاهرين طبقي ڏانهن رجوع ڪرڻ تمام آسان آهي. thisان جي موجوده مثال ۽ ٻاهرين لاء. super- هن جي والدين لاء. اوور کي اوٽ ڪلاس جي نالي سان تبديل ڪرڻ نه وساريو. thisھاڻي اچو ته مختصر طور تي لفظن ۽ لفظن جي وچ ۾ بنيادي فرق جي فهرست ڏيونsuper
  1. هڪ متغير thisڪلاس جي موجوده مثال ڏانهن اشارو ڪري ٿو جنهن ۾ اهو استعمال ڪيو ويو آهي، جڏهن ته اهو superوالدين طبقي جي موجوده مثال ڏانهن اشارو ڪري ٿو.

  2. هر تعمير ڪندڙ، ٻين تعمير ڪندڙن کي واضح ڪالن جي غير موجودگي ۾، واضح طور تي super()ان جي والدين طبقي جي غير دليل واري تعمير ڪندڙ کي سڏيندو آهي، پر توهان وٽ هميشه ڪنهن ٻئي تعمير ڪندڙ کي واضح طور تي ڪال ڪرڻ جو اختيار آهي this()، يا super().
thisشايد اهو سڀ ڪجهه آهي جيڪو لفظن ۽ جاوا ۾ فرق جي باري ۾ چئي سگهجي ٿو super۽ انهن کي پروگرامن ۾ ڪيئن استعمال ڪيو وڃي ٿو. جيئن اسان ڏٺو آهي، انهن جو بنيادي مقصد هڪ تعمير ڪندڙ کي ٻئي کان سڏڻ ۽ موجوده ڪلاس ۽ ان جي والدين طبقي ۾ بيان ڪيل مثال جي متغير ڏانهن اشارو ڪرڻ آهي. اهو نه وساريو ته اهي بلڪل عام متغير نه آهن، ۽ هاڻي - منهنجي سوال جو جواب، جيڪو مون پهرين پيراگراف ۾ پڇيو هو. نه، هڪ متغير کي thisنئين قيمت مقرر نه ٿي ڪري سگھجي ڇاڪاڻ ته اهو حتمي قرار ڏنو ويو آهي. توھان ھي ڪرڻ جي ڪوشش ڪري سگھوٿا IDE ۾ - توھان کي ملندو ھڪڙي تاليف جي غلطي "توهان ھڪڙي نئين قيمت کي متغير کي تفويض نٿا ڪري سگھو this- اھو حتمي قرار ڏنو ويو آھي." اصل مضمون هتي .
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION