JavaRush /جاوا بلاگ /Random-SD /10 خلاصو ڪلاس ۽ انٽرفيس جاوا انٽرويو سوال

10 خلاصو ڪلاس ۽ انٽرفيس جاوا انٽرويو سوال

گروپ ۾ شايع ٿيل
خلاصو طبقن ۽ انٽرفيس تمام مشهور آهن سڀ اعتراض تي مبني پروگرامنگ ٻولين ۾. ۽ تقريباً هر جاوا انٽرويو ۾ توهان کي هن موضوع تي گهٽ ۾ گهٽ هڪ سوال نظر ايندو. انٽرفيس جو ذڪر گهڻو ڪري انهن جي مقبوليت جي ڪري سافٽ ويئر ڊيزائنرز ۾ ڪيو ويندو آهي، پر تجريدي طبقن بابت سوال به وقت بوقت اٿاريا ويندا آهن. بعد ۾ اڪثر درخواست ڏيندڙن کان جونيئر ڊولپرز جي پوزيشن لاءِ پڇيا ويندا آهن، چون ٿا، جاوا ڊولپمينٽ ۾ ٻن سالن کان وڌيڪ تجربو ناهي، جڏهن ته انٽرفيس بابت سوال اڪثر انهن سان انٽرويو دوران سامهون ايندا آهن جن جو تجربو اڳ ۾ ئي چئن سالن کان وڌي چڪو آهي. اهي عام طور تي جاوا ڊيزائن جي نمونن جي باري ۾ ٻين سوالن سان گڏ پڇيا ويندا آهن، جهڙوڪ ڊيڪرائيندڙ يا فيڪٽري نمونن. 10 خلاصو ڪلاس ۽ انٽرفيس جاوا انٽرويو سوال - 1هن آرٽيڪل ۾، اسان تجريدي طبقن ۽ انٽرفيس تي عام سوالن تي نظر ڪنداسين جيڪي جاوا انٽرويو جي مختلف سطحن تي پڇيا ويا. انھن مان گھڻا ڏکيو نه هجڻ گهرجي جيتوڻيڪ هڪ نئين جاوا پروگرامر لاء. اهي گهڻو ڪري خالص علم جا سوال آهن، پر انهن مان ڪجهه، جهڙوڪ جاوا ۾ تجريدي طبقن ۽ انٽرفيس جي وچ ۾ فرق، يا جڏهن انٽرفيس تي خلاصي طبقي کي چونڊڻ لاءِ ، ڪافي مشڪل ٿي سگهن ٿا. اسان توهان کي موضوع تي درجن کان دلچسپ سوال پيش ڪندا آهيون.
جيڪڏهن توهان ڪڏهن هڪ انٽرويو ۾ هڪ سوال پڇيو آهي يا توهان کي خلاصو طبقن ۽ انٽرفيس بابت ڪو به قابل قدر سوال پڇڻ گهرجي، پر اهو هن فهرست تي ناهي، مهرباني ڪري ان کي تبصرن ۾ حصيداري ڪريو.

1. ڇا جاوا ۾ تجريدي طبقي جا ٺاھيندڙ آھن؟

ها، جاوا ۾ هڪ خلاصو ڪلاس ۾ توهان ٺاهي سگهو ٿا اعلان ۽ وضاحت ڪريو. جيئن ته خلاصو طبقن جا مثال پيدا ڪرڻ ناممڪن آهي، اهڙي قسم جي تعمير ڪندڙ کي صرف ان وقت سڏي سگهجي ٿو جڏهن تعمير ڪندڙن جي هڪ زنجير ٺاهي، اهو آهي، جڏهن هڪ مخصوص عمل درآمد طبقي جو مثال ٺاهي. پر تصور ڪريو ته انٽرويو وٺندڙ پوءِ سوال پڇي ٿو: هڪ تعمير ڪندڙ جو نقطو ڇا آهي جيڪڏهن توهان ڪنهن به خلاصي طبقي جو مثال نه ٿا ٺاهي سگهو؟ نقطي اهو آهي ته اهو اڃا تائين استعمال ڪري سگهجي ٿو عام متغيرن جي شروعاتي قدرن کي سيٽ ڪرڻ لاءِ هڪ خلاصي ڪلاس ۾ اعلان ڪيو ويو آهي ۽ مختلف عملن پاران استعمال ٿيل آهي. ايستائين جو توهان ڪنهن به تعمير ڪندڙ جو اعلان نه ڪيو آهي، مرتب ڪندڙ هڪ ڊفالٽ غير دليل ٺاهيندڙ کي خلاصي طبقي ۾ شامل ڪندو. ان کان سواء، توهان جو ذيلي ڪلاس مرتب نه ٿيندو ڇو ته ڪنهن به تعمير ڪندڙ ۾ پهريون بيان super()جاوا ۾ ڊفالٽ سپر ڪلاس تعمير ڪندڙ کي هڪ امڪاني ڪال آهي.

2. ڇا جاوا ۾ تجريدي ڪلاس انٽرفيس کي لاڳو ڪري سگھن ٿا؟ ڇا انهن کي سڀني طريقن تي عمل ڪرڻو پوندو؟

ها، خلاصو طبقن کي استعمال ڪندي انٽرفيس کي لاڳو ڪري سگھن ٿا implements. جيئن ته اهي خلاصا آهن، انهن کي سڀني طريقن کي لاڳو ڪرڻ جي ضرورت ناهي. قسم جو اعلان ڪرڻ لاءِ هڪ خلاصو بنيادي ڪلاس ۽ هڪ انٽرفيس هجڻ هڪ تجويز ڪيل مشق آهي. ھڪڙو مثال ھڪڙو انٽرفيس آھي java.util.List۽ لاڳاپيل خلاصو ڪلاس java.util.AbstractList. ڇاڪاڻ ته AbstractListاهو سڀني عام طريقن کي لاڳو ڪري ٿو، مخصوص لاڳو ڪرڻ (جهڙوڪ LinkedList۽ ArrayList) سڀني طريقن کي لاڳو ڪرڻ جي ضرورت ناهي، جيئن ته اهي انٽرفيس کي Listسڌو سنئون لاڳو ڪن. هي حل هڪ قسم جو اعلان ڪرڻ لاءِ انٽرفيس استعمال ڪرڻ جي فائدي کي گڏ ڪري ٿو هڪ خلاصي طبقي جي لچڪ سان سڀني عام رويي کي هڪ جڳهه تي لاڳو ڪرڻ لاءِ. جوشوا بلوچ جي ڪتاب ”جاوا. Effective Programming” ۾ جاوا ۾ انٽرفيس ۽ تجريدي ڪلاس استعمال ڪرڻ جي موضوع تي هڪ بهترين باب آهي، بهتر سمجهڻ لاءِ ان کي پڙهڻ جو مطلب آهي.

3. ڇا ھڪڙو خلاصو ڪلاس فائنل ٿي سگھي ٿو؟

نه، هو نه ٿو ڪري سگهي. لفظ جو finalمطلب آهي ته طبقو درجه بندي جي چوٽي تي آهي ۽ اولاد نٿو ٿي سگهي. ۽ وارثن کان سواءِ خلاصو طبقو خلا ۾ گول گول گهوڙو آهي، ڇاڪاڻ ته ان جو مثال قائم ڪرڻ ناممڪن آهي abstract class. اهڙيءَ طرح، جيڪڏهن هڪ طبقو ٻنهي abstract۽ آهي final، ته پوءِ ان جو ڪوبه اولاد نه آهي ۽ نه ئي ان کي قائم ڪري سگهجي ٿو. جاوا ڪمپلر هڪ غلطي اڇلائي ڇڏيندو جيڪڏهن توهان هڪ ڪلاس ٺاهيو abstract۽ final.

4. ڇا جاوا ۾ هڪ تجريدي طبقي ۾ جامد طريقا هوندا؟

ها، تجريدي طبقن جامد طريقن جو اعلان ۽ وضاحت ڪري سگھن ٿا. اهو صرف ضروري آهي ته جاوا ۾ جامد طريقن ٺاهڻ جي عام اصولن تي عمل ڪريو، ڇاڪاڻ ته اهي اعتراض تي مبني ڊيزائن ۾ ناپسنديده آهن، ڇاڪاڻ ته جاوا ۾ جامد طريقن کي ختم ڪرڻ ممڪن ناهي. هڪ تجريدي طبقي ۾ جامد طريقا تمام ناياب آهن، پر جيڪڏهن ان جا سٺا سبب آهن، اتي توهان کي انهن کي استعمال ڪرڻ کان روڪڻ جي ڪا به شيء ناهي.

5. ڇا اهو ممڪن آهي ته هڪ خلاصو ڪلاس کي تيز ڪرڻ؟

نه، توهان اهو نٿا ڪري سگهو. تجريدي طبقي جو جوهر اهو آهي ته اهو مڪمل ناهي، ۽ ان کي پنهنجي نسلي طبقن ۾ مڪمل ڪرڻ جي ضرورت آهي. اهو آهي، هي طبقو استعمال لاء تيار ناهي. مثال طور، اهو شايد ڪجهه طريقن تي عمل ڪرڻ جي کوٽ آهي. جيئن ته هڪ طبقو استعمال لاء تيار نه آهي، ان جو اعتراض ٺاهي نٿو سگهجي. پر توهان هڪ تجريدي طبقي جي وارثن جا مثال ٺاهي سگهو ٿا. جاوا ڪمپلر هڪ غلطي اڇلائي ڇڏيندو جيڪڏهن هڪ پروگرام هڪ خلاصو ڪلاس کي فوري ڪرڻ جي ڪوشش ڪري ٿو.

6. ڇا اهو ضروري آهي ته هڪ تجريدي طبقي لاءِ تجريدي طريقا هجن؟

نه، هڪ خلاصو طبقو شايد ڪو به خلاصو طريقو نه هجي. abstractتوهان جاوا ۾ هڪ ڪلاس خلاصو ٺاهي سگهو ٿا صرف ان جي اعلان ۾ لفظ استعمال ڪندي . مرتب ڪندڙ ڪنهن به ساخت جي پابنديون لاڳو ڪندو، جيئن ته هن طبقي جي تڪميل کي پيدا ڪرڻ جي اجازت نه ڏيڻ. رستي ۾، سوال اهو آهي ته ڇا هڪ تجريدي طبقي يا انٽرفيس ۾ تجريدي طريقا هجڻ گهرجي. اهو مون کي لڳي ٿو ته هڪ تجريدي طبقي ۾ تجريدي طريقا هجڻ گهرجن، ڇو ته اها پهرين شيء آهي جيڪو پروگرامر سوچيندو آهي جڏهن هڪ تجريدي طبقي کي ڏسڻ ۾ اچي ٿو. هي تعجب کي گهٽائڻ جي اصول سان چڱي ريت ٺهڪي اچي ٿو.

7. جاوا ۾ خلاصي طبقي ۽ انٽرفيس جي وچ ۾ ڇا فرق آهي؟

اهو سڀ کان اهم ۽ سڀ کان وڌيڪ کلاسک جاوا انٽرويو سوالن مان هڪ آهي. مان شمار نٿو ڪري سگهان ته ڪيترا ڀيرا مون هن سوال کي هر سطح تي جاوا انٽرويو ۾ ڏٺو آهي. ڇا اهو سوال دلچسپ بڻائي ٿو، خاص طور تي، درخواست ڪندڙ لاء هڪ مثال مهيا ڪرڻ جو موقعو آهي. اعتراض تي مبني پروگرامنگ جي بنيادي ڳالهين جي باري ۾ سوالن جا جواب ڏيڻ، جهڙوڪ تجريد، انڪپسوليشن، پوليمورفيزم ۽ وراثت، آسان آهي، پر جڏهن اهو اچي ٿو اهڙين ذيلي نونسن جي، نوڪري جا درخواست ڪندڙ اڪثر پريشان ٿي ويندا آهن ۽ چوندا آهن پهرين شيء جيڪا ذهن ۾ اچي ٿي. هن سوال جو جواب هڪ الڳ مضمون جو مستحق آهي (خاص طور تي جاوا 8 ۾ تبديلين کان پوءِ)، جڏهن ته، مختصر ۾:
  • هڪ انٽرفيس ڪنهن شئي جي صرف رويي (طريقن) کي بيان ڪري ٿو، پر ان ۾ رياستون (فيلڊز) (سواءِ public static final) نه هونديون آهن، جڏهن ته هڪ خلاصو طبقو انهن کي حاصل ڪري سگهي ٿو.

  • ھڪڙو خلاصو طبقو وراثت ۾ آھي (وڌائي ٿو)، ۽ ھڪڙو انٽرفيس لاڳو ڪيو ويو آھي (عمل). اسان صرف هڪ طبقي کي ورثي ۾ آڻي سگهون ٿا، پر ڪيترن ئي انٽرفيس کي لاڳو ڪريون جيئن اسان چاهيون ٿا. هڪ انٽرفيس ٻئي انٽرفيس/انٽرفيس کي وڌائي سگھي ٿو.

  • تجريدي طبقن کي استعمال ڪيو ويندو آهي جڏهن اتي هڪ "is-a" تعلق آهي، اهو آهي، ذيلي ڪلاس بنيادي تجريدي طبقي کي وڌايو، ۽ انٽرفيس کي مختلف طبقن پاران لاڳو ڪري سگهجي ٿو جيڪي هڪ ٻئي سان لاڳاپيل نه آهن.

8. ڪڏهن سمجهه ۾ اچي ٿو ته هڪ تجريدي طبقي کي انٽرفيس تي ترجيح ڏيڻ ۽ ان جي برعڪس؟

هي خلاصو طبقن ۽ انٽرفيس تي پوئين سوالن جو تسلسل آهي. جيڪڏهن توهان کي خبر آهي ته انهن جا نحوي اختلاف ڪهڙا آهن، ته پوءِ هن سوال جو جواب ڏيڻ توهان کي ڪو مسئلو نه ٿيندو، ڇو ته اهي فيصلا ڪرڻ ۾ تعين ڪندڙ عنصر آهن. جيئن ته شايع ٿيل انٽرفيس ۾ هڪ نئون طريقو شامل ڪرڻ تقريبا ناممڪن آهي، اهو بهتر آهي ته هڪ تجريدي طبقي کي استعمال ڪرڻ جي صورت ۾ وڌيڪ ترقي جي امڪاني ضرورت جي صورت ۾. جاوا ۾ تجريدي طبقن کي ترقي ڪرڻ انٽرفيس کي ترقي ڪرڻ کان وڌيڪ آسان آهي. ساڳئي طرح، جيڪڏهن هڪ انٽرفيس تمام گهڻا طريقا آهن ۽ انهن سڀني کي لاڳو ڪرڻ هڪ حقيقي سر درد بڻجي ٿو، اهو بهتر آهي ته ڊفالٽ عمل درآمد لاء هڪ خلاصو ڪلاس ٺاهيو وڃي. هي نمونو جاوا گڏ ڪرڻ واري پيڪيج ۾ پيروي ڪئي وئي آهي، خلاصو ڪلاس AbstractListلاءِ ڊفالٽ عمل درآمد مهيا ڪري ٿو List. خلاصو ڪلاس استعمال ڪريو جيڪڏھن:
  • توھان چاھيو ٿا شيئر ڪريو ڪوڊ ڪيترن ئي ويجھي لاڳاپيل طبقن جي وچ ۾.

  • توهان توقع ڪندا ته ڪلاس جيڪي توهان جي تجريدي طبقي کي وڌائين ٿا انهن ۾ ڪيترائي طريقا يا فيلڊ عام آهن، يا public(مثال طور، protected۽ private).

  • توھان چاھيو ٿا اعلان ڪريو غير جامد يا не-finalفيلڊ. هي توهان کي طريقن جي وضاحت ڪرڻ جي اجازت ڏئي ٿو جيڪي رسائي ۽ تبديل ڪري سگهن ٿا اعتراض جي حالت جنهن سان اهي تعلق رکن ٿيون.
انٽرفيس استعمال ڪريو جيڪڏھن:
  • توهان توقع ڪندا ته غير لاڳاپيل طبقن توهان جي انٽرفيس کي لاڳو ڪرڻ لاءِ. مثال طور، انٽرفيس Comparable۽ Cloneableڪيترن ئي غير لاڳاپيل طبقن پاران لاڳو ڪيا ويا آهن.

  • توھان چاھيو ٿا ھڪڙي خاص ڊيٽا جي قسم جي رويي کي بيان ڪريو، پر توھان کي پرواھ نه آھي ته اھو ڪير لاڳو ڪري ٿو.

  • توھان چاھيو ٿا گھڻن قسم جي ورثي کي استعمال ڪريو.

9. جاوا ۾ هڪ خلاصو طريقو ڇا آهي؟

هڪ تجريدي طريقو هڪ طريقو آهي بغير جسم جي. توھان صرف ھڪڙي طريقي جو اعلان ڪريو ان کي بيان ڪرڻ کان سواء، ھڪڙي لفظ کي استعمال ڪندي abstractطريقي جي اعلان ۾. جاوا ٻولي ۾ انٽرفيس اندر بيان ڪيل سڀئي طريقا ڊفالٽ طور خلاصا آھن. هتي جاوا ۾ هڪ خلاصو طريقو جو هڪ مثال آهي:
public void abstract printVersion();
هاڻي، هن طريقي کي لاڳو ڪرڻ لاء، توهان کي خلاصي طبقي کي وڌائڻ ۽ هن طريقي کي ختم ڪرڻ جي ضرورت آهي.

10. ڇا جاوا ۾ هڪ خلاصو ڪلاس هڪ طريقو تي مشتمل آهي main؟

ها، جاوا ۾ هڪ خلاصو ڪلاس هڪ طريقو تي مشتمل ٿي سگهي ٿو main، ڇاڪاڻ ته اهو صرف هڪ ٻيو جامد طريقو آهي، ۽ هڪ خلاصو طبقو طريقي سان استعمال ڪري سگهجي ٿو main، جيستائين توهان ان کي فوري نه ڪيو. اهو سڀ ڪجهه مان توهان کي ٻڌائڻ چاهيان ٿو. ۽ ياد رکو: تجريدي ڪلاس ۽ انٽرفيس اعتراض جي بنياد تي تجزيي ۽ ڊيزائن جي عمل ۾ اهم ڊيزائن جا فيصلا آهن، ۽ احتياط سان استعمال ڪيو وڃي، يقينا، جيڪڏهن توهان هڪ لچڪدار سسٽم ٺاهڻ چاهيو ٿا.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION