JavaRush /جاوا بلاگ /Random-SD /جاوا ڊولپر لاءِ انٽرويوز کان سوالن ۽ جوابن جو تجزيو. حصو ...

جاوا ڊولپر لاءِ انٽرويوز کان سوالن ۽ جوابن جو تجزيو. حصو 5

گروپ ۾ شايع ٿيل
هيلو، هيلو! اڄ، جاوا ڊولپرز اعلي مطالبن ۾ آهن. يقينن، مان توهان کي خالي جڳهه فراهم نه ڪري سگهان ٿو، پر مان توهان جي مدد ڪرڻ جي ڪوشش ڪندس نئين ڄاڻ حاصل ڪرڻ ۽ ڪجهه خلا کي بند ڪرڻ. تنهنڪري اسان جاوا ڊولپر لاءِ 250+ انٽرويو سوالن جو تجزيو ڪرڻ جاري رکون ٿا. تجزيو جي پوئين حصن جا لنڪ آرٽيڪل جي آخر ۾ آهن.جاوا ڊولپر لاءِ انٽرويوز کان سوالن ۽ جوابن جو تجزيو.  حصو 5 - 1

39. جاوا ۾ رسائي تبديل ڪندڙ ڇا آهن؟ انهن کي نالو ڏيو. اهي ڇا لاء استعمال ڪيا ويا آهن؟

مون اڳ ۾ جاوا encapsulation عنصرن جي باري ۾ سوال ۾ رسائي جي تبديلين کي بيان ڪيو. پر مان توکي هر حال ۾ ياد ڏياريندس. جاوا ۾ رسائي تبديل ڪندڙ لفظ آھن جيڪي ھڪڙي خاص جاوا جزو کي ڏنل رسائي جي سطح کي بيان ڪن ٿا. رسائي تبديل ڪندڙ ٿي سگھن ٿا:
  • عوامي - هن ترميمي سان هڪ عنصر عوامي طور تي رسائي لائق هوندو. اهي. شعبا ۽ طريقا، طبقن جو اعلان ڪيو ويو عوامي تبديليءَ سان ٻين طبقن کي ٻنهي موجوده پيڪيج ۽ خارجي پيڪيجز مان؛
  • محفوظ - هن ترميمي سان هڪ عنصر موجوده پيڪيج جي موجوده ڪلاس يا نسلي طبقن ۾ ڪٿي به دستياب هوندو، جيتوڻيڪ اهي ٻين پيڪيجز ۾ آهن؛
  • default , or missing modifier - ھي موڊيفائر ان وقت استعمال ڪيو ويندو آھي جنھن مھل پھچائي تبديليءَ جي ڪا به وضاحت نه ڪئي وئي آھي. اھو ساڳيو آھي پوئين ھڪڙي سان، سواء ان جي نمائش جي اجازت آھي نسلي طبقن ۾ جيڪي ٻين پيڪيجز ۾ آھن؛
  • نجي سڀني تبديلين مان سڀ کان وڌيڪ خانگي آهي، جيڪا صرف موجوده طبقي ۾ عنصر تائين رسائي جي اجازت ڏئي ٿي.
جاوا ڊولپر لاءِ انٽرويوز کان سوالن ۽ جوابن جو تجزيو.  حصو 5 - 2

40. جامد ۽ متغير طريقن جي مکيه خصوصيت جو نالو ڏيو

هڪ تمام عجيب فارموليشن - "متغير طريقن". يقينا هي عام، غير جامد طريقن ڏانهن اشارو آهي. تنهن ڪري، بنيادي فرق اهو آهي ته جامد طريقن جو تعلق طبقي سان آهي ۽ حقيقت ۾، انهن لاء توهان کي هن طبقي جو هڪ مثال ٺاهڻ جي ضرورت ناهي: ان کي صرف طبقي قسم جي استعمال سان سڏيو وڃي ٿو. مثال طور، اسان وٽ هڪ جامد طريقو آهي ٻلي کي پالڻ لاءِ:
public class CatService {
   public static void petTheCat(Cat cat) {
       System.out.println("Погладить кота - " + cat.getName());
   }
اسان کي ان کي سڏڻ لاءِ CatService ڪلاس جي مثال جي ضرورت ناهي :
Cat cat = new Cat(7, "Bobi");
CatService.petTheCat(cat);
جڏهن ته عام طريقا پابند هوندا آهن (جي تعلق سان) ڪنهن شئي سان، ۽ انهن کي سڏڻ لاءِ، توهان وٽ هڪ مثال هجڻ گهرجي (آبجڪٽ) جنهن تي طريقو سڏيو ويندو. مثال طور، هڪ ٻلي هڪ غير جامد طريقو آهي - meowing:
class Cat {
   public void mew() {
       System.out.println("Meow! Meow! Meow!");
   }
هن طريقي کي سڏڻ لاء، اسان کي ٻلي جي هڪ خاص مثال جي ضرورت آهي:
Cat cat = new Cat(7, "Bobi");
cat.mew();

41. جامد ۽ "متغير" طريقن تي بنيادي پابنديون ڇا آهن؟

جيئن مون اڳ ۾ چيو آهي، هڪ باقاعده طريقي جي بنيادي حد اها آهي ته اتي هميشه ڪجهه مثال هجڻ گهرجي جنهن تي طريقو سڏيو ويندو. پر هڪ جامد طريقي جي ضرورت نه آهي، پر اهو هن حوالي سان حوالو نٿو ڪري سگهي - موجوده اعتراض جي عناصر ڏانهن - ڇاڪاڻ ته موجوده اعتراض ان لاء موجود ناهي.

42. جامد لفظ جو مطلب ڇا آھي؟ ڇا هڪ جامد طريقو اووررائيڊ يا اوورلوڊ ٿي سگهي ٿو؟

جامد لفظ طرفان نامزد ڪيل عنصر جو تعلق طبقي جي ڪنهن شئي سان نه هوندو آهي، بلڪه طبقي سان هوندو آهي، ۽ اهو لوڊ ٿيندو آهي جڏهن ڪلاس پاڻ لوڊ ڪيو ويندو آهي. جامد عناصر سڄي پروگرام لاءِ واحد آهن، ۽ باقاعده عناصر صرف هڪ مخصوص اعتراض لاءِ آهن. جامد ٿي سگهي ٿو:
  • ڪلاس جا شعبا؛
  • ڪلاس جي شروعاتي بلاڪ؛
  • ڪلاس جو طريقو؛
  • هڪ طبقي جا اندروني طبقا (جڏهن ته، اهو اڃا تائين هڪ ٽيوٽولوجي آهي).
هڪ جامد طريقو ختم نٿو ڪري سگهجي: اهو طبقي سان تعلق رکي ٿو ۽ وراثت ۾ نه آهي، پر ساڳئي وقت ان کي اوور لوڊ ڪري سگهجي ٿو.

43. ڇا هڪ طريقو هڪ ئي وقت جامد ۽ خلاصو ٿي سگهي ٿو؟

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

44. ڇا اهو ممڪن آهي ته باقاعده طريقن جي وچ ۾ جامد طريقا استعمال ڪرڻ؟ برعڪس؟ ڇو؟

جامد طريقا استعمال ڪري سگھجن ٿا باقاعده طريقن ۾، ڇاڪاڻ ته ڪجھ به نه روڪيو. ساڳئي وقت، ريورس صورتحال ناممڪن آهي: هڪ جامد طريقو هن طبقي جي مخصوص مثال جي حوالي سان بغير باقاعده طريقو استعمال نٿو ڪري سگهي. ۽ جيئن اسان کي ياد آهي، هي حوالو جامد طبقي جي ميمبرن لاءِ دستياب ناهي: ڪلاس جون ڪيتريون ئي مخصوص شيون ٿي سگهن ٿيون جيتريون توهان چاهيو ٿا، ۽ انهن مان هر هڪ جي اندر پنهنجو پاڻ جو حوالو هوندو - هي . ۽ پوءِ توهان ڪيئن سمجھندا آهيو ته توهان کي ڪهڙي خاص لنڪ وٺڻ جي ضرورت آهي؟ پر ڪو به رستو نه. تنهن ڪري، جامد عناصر غير جامد عناصر ڏانهن اشارو نٿا ڪري سگهن، بغير ڪنهن مخصوص اعتراض جي حوالي سان. دراصل، هڪ جامد طريقو هڪ غير جامد طريقو استعمال ڪري سگهي ٿو صرف ان صورت ۾ جڏهن اهو هڪ خاص اعتراض جو حوالو آهي. مثال طور، جيڪو هڪ دليل طور آيو آهي:
public static void petTheCat(Cat cat) {
   System.out.println("Погладить кота - " + cat.getName());
}
هتي اسان ڏسون ٿا ته جامد طريقو petTheCat سڏين ٿا عام، غير جامد طريقو Cat اعتراض جي - getName .

45. انٽرفيس ڇا آهي؟ ڇا ڪو فائنل انٽرفيس ٿي سگھي ٿو؟

جيئن اسان کي ياد آهي، جاوا ۾ ڪا به گھڻائي وراثت نه آهي. انٽرفيس ان لاءِ هڪ متبادل آهي. انٽرفيس ڏسڻ ۾ اچي ٿو هڪ تمام سٽيل ڪلاس وانگر. اهي ڪنهن خاص عمل جي بغير ڪارڪردگي جي وضاحت ڪن ٿا، جيڪو انهن طبقن طرفان لاڳو ٿئي ٿو جيڪي انهن انٽرفيس کي لاڳو ڪن ٿا. انٽرفيس مثال:
public interface Animal {
    void voice();
}
ڪلاس پاران انٽرفيس تي عمل درآمد جو هڪ مثال:
class Cat implements Animal {

   @Override
   public void voice() {
       System.out.println("Meow! Meow! Meow!");
   }
}
بنيادي شيء جيڪا توهان کي انٽرفيس استعمال ڪرڻ بابت ڄاڻڻ جي ضرورت آهي:
  1. انٽرفيس طريقن ۾ صرف هڪ هيڊر هجڻ گهرجي، بغير ڪنهن مخصوص طريقي جي جسم جي، يعني. خلاصو هجڻ گهرجي (پر خلاصي لفظ استعمال ڪرڻ کان سواءِ ). ھن جي استثنا جامد ۽ ڊفالٽ طريقا آھن، جن کي ھڪڙي طريقي جي جسم جي ضرورت آھي.
  2. ھڪڙو طبقو ڪيترن ئي انٽرفيس کي لاڳو ڪري سگھي ٿو (جيئن مون چيو آھي، ھي ھڪڙو متبادل آھي گھڻن وراثت جو)، جيڪي ڪاما سان الڳ ٿيل آھن: طبقو شعر لاڳو ڪري ٿو Animal، Wild .
  3. انٽرفيس لفظ استعمال ڪندي ٺاهيا ويا آهن - انٽرفيس .
  4. جڏهن هڪ ڪلاس پاران هڪ انٽرفيس کي لاڳو ڪرڻ، لفظ لاڳو ٿئي ٿو .
  5. ھڪڙو طبقو جيڪو ھڪڙي خاص انٽرفيس کي لاڳو ڪري ٿو، ان کي لازمي طور تي ان جي سڀني تجريدي طريقن کي لاڳو ڪرڻ گھرجي، يا پاڻ کي خلاصو بيان ڪرڻ گھرجي.
  6. انٽرفيس کي استعمال ڪرڻ جو بنيادي مقصد پوليمورفيزم کي لاڳو ڪرڻ آهي (ڪيترن ئي شڪلون وٺڻ جي شين جي صلاحيت).
  7. ضابطي جي طور تي، طريقن جي رسائي جي تبديلين کي انٽرفيس ۾ نه لکيو ويو آهي: اهي ڊفالٽ طور تي عوامي آهن، ۽ عوام کان سواء ٻيون ترميمي بيان نه ٿي ڪري سگھجي. جاوا 9 کان وٺي، توھان استعمال ڪري سگھو ٿا خانگي موڊيفيرز طريقن لاءِ.
  8. انٽرفيس متغير جامد حتمي آهن ڊفالٽ ، ٻين لفظن ۾، مستقل: انهن کي هميشه انٽرفيس ۾ سڌو سنئون شروع ڪرڻ جي ضرورت آهي.
  9. توھان انٽرفيس اعتراض ٺاھي نٿا سگھو.
ان سوال جو جواب ته ڇا انٽرفيس حتمي ٿي سگهي ٿو يقيناً نه. سڀ کان پوء، انٽرفيس جي تمام جوهر تي عمل ڪرڻ آهي. ۽ جيئن اسان سڀني کي چڱي طرح ياد آهي، ڪلاس جي سطح تي فائنل ان کي غير وارث بڻائي ٿو، ۽ انٽرفيس جي صورت ۾، غير قابل عمل. اسان کي هڪ انٽرفيس جي ضرورت ڇو آهي جيڪا لاڳو ۽ استعمال نه ٿي ڪري سگهجي؟ اهو صحيح آهي - ڪا ضرورت ناهي! ۽ مرتب ڪندڙ ائين ئي سوچي ٿو)) جاوا ڊولپر لاءِ انٽرويوز کان سوالن ۽ جوابن جو تجزيو.  حصو 5 - 4معنيٰ صرف جامد طريقن جي تعارف سان ظاهر ٿيو جاوا 8 سان انٽرفيس ۾، پر هن حقيقت کي تبديل نه ڪيو ته انٽرفيس حتمي نه ٿي سگهي. مون انٽرفيس بابت ڳالهايو، تمام سطحي طور تي، ڇاڪاڻ ته ... هي هڪ وسيع موضوع آهي. ھن بابت وڌيڪ پڙھو مضمونن ۾ جاوا ۾ انٽرفيس بابت ۽ خلاصي طبقن ۽ انٽرفيس جي وچ ۾ فرق .

46. ​​مان جامد شعبن کي ڪٿي شروع ڪري سگهان ٿو؟

جامد شعبن کي شروع ڪري سگهجي ٿو:
  • سڌي طرح اعلان تي، برابر نشاني جي ذريعي = ؛
  • جامد شروعاتي بلاڪ ۾؛
  • هڪ غير جامد شروعاتي بلاڪ ۾، پر توهان کي اهو سمجهڻ گهرجي ته هر وقت هڪ اعتراض پيدا ڪيو ويندو، هن فيلڊ کي هن شروعاتي بلاڪ جي ذريعي ختم ڪيو ويندو؛
  • ڪلاس تعمير ڪندڙ ۾. هر دفعي هن تعمير ڪندڙ کي سڏيو ويندو آهي (يعني، جڏهن ڪو اعتراض هن تعمير ڪندڙ ذريعي ٺاهيو ويندو آهي)، هن فيلڊ کي ختم ڪيو ويندو؛
  • جامد طريقن ۾؛
  • غير جامد طريقن ۾؛
  • اندروني جامد ۽ غير جامد، مقامي ۽ گمنام طبقن ۾.

47. گمنام طبقا ڇا آهن؟

گمنام طبقو اهي طبقا آهن جن کي پنهنجو قسم ناهي. مان ڪهڙي ڳالهه ڪري رهيو آهيان؟ جڏهن اسان انٽرفيس جي باري ۾ ڳالهايو، مون ذڪر ڪيو ته توهان هڪ انٽرفيس اعتراض ٺاهي نٿا سگهو: توهان صرف هڪ طبقي جو هڪ اعتراض ٺاهي سگهو ٿا جيڪو انٽرفيس کي لاڳو ڪري ٿو. ڇا جيڪڏھن توھان ڪلاس ۾ ھڪڙو انٽرفيس لاڳو ڪرڻ نٿا چاھيو، پر توھان کي اڃا تائين انٽرفيس قسم جي ھڪڙي اعتراض جي ضرورت آھي؟ ۽ گهڻو ڪري، اهو هن اعتراض کي استعمال ڪرڻ جو هڪ واحد ڪيس هوندو. ۽ توهان کي هڪ مڪمل عمل درآمد ڪلاس ٺاهڻ جي ضرورت ناهي. اهو ڪيئن ڪندين؟ ساڄو! هڪ گمنام طبقي جي ذريعي! جاوا ڊولپر لاءِ انٽرويوز کان سوالن ۽ جوابن جو تجزيو.  حصو 5 - 5اچو ته چئون ته اسان وٽ ڪجهه جانورن جو انٽرفيس آهي :
public final interface Animal {
   public void voice();
}
جيڪڏهن اسان چاهيون ٿا ته هن انٽرفيس کي هڪ گمنام ڪلاس ذريعي فوري طور تي:
Animal cat = new Animal() {
   @Override
   public void voice() {
       System.out.println("Meow! Meow! Meow!");
   }
};
۽ پوء توهان محفوظ طور تي استعمال ڪري سگهو ٿا هي اعتراض ۽ ان تي عمل ٿيل طريقو - آواز . اهو آهي، هڪ گمنام طبقو هن انٽرفيس ۽ ان جي سڀني تجريدي طريقن کي هتي ۽ هاڻي لاڳو ڪري ٿو. ٻي صورت ۾، اسان هڪ انٽرفيس/خلاصي طبقي اعتراض ٺاهي نه سگهنداسين، ڇاڪاڻ ته اتي غير لاڳو ٿيل/خلاصي طريقا موجود آهن. جيئن مون ذڪر ڪيو آهي، گمنام طبقن کي استعمال ڪيو ويندو آهي نه رڳو هڪ انٽرفيس جي تجريدي طريقن کي لاڳو ڪرڻ لاء، پر پڻ هڪ تجريدي طبقي جي تجريدي طريقن کي لاڳو ڪرڻ لاء. اهو طريقو انهن حالتن لاءِ سٺو آهي جڏهن هڪ شئي هڪ ڀيرو استعمال ٿئي ٿي يا طريقن جي ڏنل عمل کي صرف هڪ ڀيرو جي ضرورت آهي، ۽ هڪ الڳ ڪلاس ٺاهڻ جي ضرورت ناهي جيڪا گهربل خلاصي طبقي/انٽرفيس کي لاڳو ڪندي. پر مان اهو به نوٽ ڪندس ته گمنام طبقن جو استعمال ڪم ۾ هڪ نادر واقعو آهي: ضابطي جي طور تي، ترجيح اڃا تائين عام طبقن کي ڏني وئي آهي. توهان هن مضمون ۾ گمنام طبقن بابت وڌيڪ پڙهي سگهو ٿا .

48. پرائمري طبقا ڇا آهن؟

جيئن ته منهنجي لاءِ، هي هڪ تمام عجيب سوال آهي ۽، شايد، اهو هڪ ٽريپ سوال آهي، ڇاڪاڻ ته جاوا ۾ پرائميٽو طبقن جي ڪا به شيءِ نه آهي: سواءِ شايد ابتدائي قسمن جي تصور جي، جنهن تي اسان اڳ ۾ ئي غور ڪري چڪا آهيون. جيئن اسان کي ياد آهي، جاوا ۾ 8 پرائمري قسمون آهن - بائيٽ ، مختصر ، int ، long ، float ، double ، char ، boolean .جاوا ڊولپر لاءِ انٽرويوز کان سوالن ۽ جوابن جو تجزيو.  حصو 5 - 6

49. ”ريپر“ ڪلاس ڇا آهي؟

جاوا ۾ پرائمري قسم جي استعمال سان بنيادي مسئلو اهو آهي ته اهي اڃا تائين ڪلاس نه آهن، ۽ جاوا اڃا تائين هڪ OOP ٻولي آهي. اهو آهي، هن ٻوليء ۾ لکيل پروگرامن کي شيون جي وچ ۾ رابطي تائين گھٽايو ويندو آهي. خير، primitives شيون نه آهن. انهن وٽ طريقا نه آهن، نه ته معيار وارا به Object ڪلاس مان . خير، ڇا جيڪڏھن اسان کي استعمال ڪرڻ جي ضرورت آھي ھڪڙي بنيادي طور نقشي ۾ چاٻي جي طور تي ؟ پوء توهان کي ڪال ڪرڻ جي ضرورت آهي hashCode طريقو . توھان پڻ سڏي سگھو ٿا برابر طريقو اتي . پوءِ ڇا؟ اتي تمام گھڻا گھڻا لمحا ٿي سگھن ٿا جتي ھڪڙو ڪلاس ھئڻ گھرجي، ۽ ھڪڙو پرائمري نه، جيڪو پروگرام ۾ پرائمري غير استعمال ٿيل ۽ ناپسنديده عناصر ٺاھي ٿو، ڇاڪاڻ⁠تہ اھو OOP جي بلڪل خيال کي خراب ڪري ٿو. پر هر شيء ايترو خراب ناهي جيترو اهو لڳي ٿو. سڀ کان پوء، جاوا هڪ ابتدائي لفافي جو تصور آهي. هر ابتدائي قسم جو هڪ اينالاگ ڪلاس آهي:
  • byte -> Byte.class
  • مختصر -> Short.class
  • int -> Integer.class
  • ڊگهو -> ڊگهو
  • float -> Float.class
  • ڊبل -> Double.class
  • char -> Character.class
  • boolean -> Boolean.class
هي سادي قسم جي نمائندگي آهي، پر مختلف قسم جي ۽ فنڪشنل طريقن سان گڏ مڪمل طبقن جي صورت ۾. انهن طبقن جي آسان استعمال لاء، آٽو باڪسنگ ۽ انباڪسنگ جا تصور متعارف ڪرايا ويا. آٽو باڪسنگ - جيڪڏهن ضروري هجي ته هڪ ابتدائي قسم جي هڪ اينالاگ ڪلاس ۾ خودڪار تبديلي (مثال طور، int ۾ Integer ). انباڪسنگ پوئين هڪ جو ريورس عمل آهي: خود بخود هڪ پرائمري ريپر ڪلاس کي پرائمري قسم ۾ تبديل ڪرڻ (مثال طور، Integer to int ). پرائمري ريپر ڪلاسن جي تعارف ۽ آٽو باڪسنگ ۽ ان باڪسنگ جي عملن جي مهرباني ، پرائمٽيو قسم جا او او پي ٻولي جا مڪمل ميمبر ٿيڻ جي قابل ٿي ويا - جاوا. جاوا ڊولپر لاءِ انٽرويوز کان سوالن ۽ جوابن جو تجزيو.  حصو 5 - 7هن موضوع بابت وڌيڪ ڄاڻڻ لاء، آئون هن مضمون کي پڙهڻ جي سختي سان صلاح ڪريان ٿو .

50. Nested ڪلاس ڇا آهي؟ جڏهن اهو استعمال ڪيو ويندو آهي؟

Nested ڪلاس هڪ اندروني طبقو آهي جيڪو ڪنهن ٻئي طبقي جو ميمبر آهي. جاوا ۾، 4 قسم جا اهڙا اندروني طبقا آهن: 1. اندروني ڪلاس هن قسم جي طبقي کي سڌو سنئون ٻئي طبقي جي جسم ۾ بيان ڪيو ويندو آهي. هڪ nested اندروني طبقو ڪنهن به خانگي ميدان يا ٻاهرئين طبقي جي هڪ مثال جي طريقن تائين رسائي ڪري سگهو ٿا. مثال طور، اچو ته هڪ زو ٺاهيو جنهن ۾ اسان وٽ هڪ جانور هوندو - هڪ زيبرا:
public class Zoo {
   class Zebra {
       public void toFeed(String food) {
           System.out.println("Дать зебре - " + food);
       }
   }
}
ڪجھ به پيچيده نه، صحيح؟ اچو ته هڪ مثال تي هڪ نظر وٺو هڪ اندروني طبقي اعتراض ٺاهڻ جو:
Zoo.Zebra zebra = new Zoo().new Zebra();
zebra.toFeed("яблоко");
جيئن ته توهان اڳ ۾ ئي ڏٺو آهي، اهو ضروري آهي ته فريمنگ ڪلاس جو هڪ اعتراض ٺاهيو، جنهن جي بنياد تي توهان اندروني طبقي جو هڪ اعتراض ٺاهي سگهو ٿا. مان اهو به نوٽ ڪرڻ چاهيان ٿو ته هڪ اندرين ڪلاس ۾ جامد طريقا يا جامد فيلڊ نه هوندا . ان جو سبب اهو آهي ته هڪ اندروني طبقو واضح طور تي پنهنجي ٻاهرين طبقي جي شئي سان جڙيل هوندو آهي ۽ اهو پنهنجي اندر ڪنهن به جامد طريقن جو اعلان نٿو ڪري سگهي. 2. Static nested classes هي ڪلاس پوئين درجي سان ملندڙ جلندڙ آهي، صرف ان ۾ ڪلاس ڊيڪليئريشن جي ويجهو هڪ مستحڪم رسائي موڊيفائر آهي. جيئن ته هن قسم جي طبقي کي ٻاهرين طبقي جي غير جامد شعبن تائين رسائي نه هوندي آهي، اهو اندروني طبقي جي ڀيٽ ۾ ٻاهرين طبقي جي جامد حصي وانگر وڌيڪ هوندو آهي. انهي صورت ۾، ڪلاس ڊيٽا کي ٻاهرين طبقي جي سڀني جامد ميمبرن تائين رسائي آهي، حتي خانگي. جامد نسٽڊ ڪلاس جو مثال:
public class Zoo {
   static class Zebra {
       public void toFeed(String food) {
           System.out.println("Дать зебре - " + food);
       }
   }
}
ٺاھڻ جو طريقو پوئين ھڪڙي کان ٿورو مختلف آھي:
Zoo.Zebra zebra = new Zoo.Zebra();
zebra.toFeed("яблоко");
هتي اسان کي ڪنهن ٻاهرئين طبقي جي ڪنهن شئي جي ضرورت نه آهي ته هڪ nested جامد طبقي جو هڪ اعتراض ٺاهي. ٻاهرين طبقي مان، اسان کي صرف ان جي قسم جي ضرورت آهي ته جيئن اسان nested طبقي جي مقام کي ڳولي سگهون ٿا. 3. مقامي طبقو مقامي طبقن کي هڪ طريقي جي جسم جي اندر بيان ڪيل طبقن کي سڏيو ويندو آهي، ۽ مقامي طبقي جي ڪنهن شئي جي تخليق ۽ استعمال خاص طور تي هن طريقي سان ممڪن آهي. مثال:
public class Zoo {
   public void toFeed(String animal, String food) {
       switch(animal){
           case "зебра":
               class Zebra {
                   void toFeedZebra(String food) {
                       System.out.println("Дать зебре - " + food);
                   }
               }
               Zebra zebra = new Zebra();
               zebra.toFeedZebra(food);
               ...
استعمال مثال:
Zoo zoo = new Zoo();
zoo.toFeed("зебра", "яблоко");
toFeed طريقي جي ڪوڊ کي ڏسڻ کان سواء ، توهان کي مقامي طبقي جي وجود تي شڪ به نه ٿيندو، ڇا توهان؟ مقامي طبقو جامد يا عارضي نه ٿو ٿي سگھي، پر ان کي خلاصي يا حتمي طور نشان لڳائي سگھجي ٿو (صرف OR، ڇو ته انھن ٻن تبديلين کي استعمال ڪرڻ سان تڪرار پيدا ٿيندو). 4. گمنام طبقن اسان اڳ ۾ ئي مٿي گمنام طبقن بابت ڳالهايو آهي، ۽ جيئن توهان کي ياد آهي، اهي ٻن ذريعن کان ٺاهي سگھجن ٿيون - انٽرفيس ۽ ڪلاس. اندروني جامد ۽ غير جامد طبقن کي استعمال ڪرڻ جا سبب استعمال ڪيا ويا آهن ڇو ته ڪڏهن ڪڏهن اهو بهتر آهي ته ننڍن طبقن کي وڏين طبقن ۾ شامل ڪيو وڃي ۽ انهن کي گڏ رکڻ لاء: هن طريقي سان انهن ۾ اعلي هم آهنگي ۽ هڪ گڏيل مقصد هوندو. دراصل، nested طبقن جو استعمال ڪوڊ encapsulation وڌائي ٿو. مقامي طبقن کي چونڊڻ جو سبب اهو ٿي سگهي ٿو ته هڪ ڏنل ڪلاس خاص طور تي هڪ واحد طريقي سان استعمال ڪيو وڃي. انهي حالت ۾، ڇا اهو ضروري آهي ته ڪوڊ کي سڄي ايپليڪيشن ۾ پکيڙيو وڃي؟ نه. پر ساڳئي وقت مان اهو به شامل ڪندس ته منهنجي عمل ۾ مون ڪڏهن به مقامي طبقن جو استعمال نه ڏٺو آهي، ڇاڪاڻ ته انهن جي ضرورت انتهائي تڪراري آهي. خير، گمنام طبقن کي استعمال ڪرڻ جو سبب اهو ٿي سگهي ٿو ته هڪ انٽرفيس يا تجريدي طبقي جي هڪ مخصوص عمل کي صرف هڪ ڀيرو جي ضرورت پوندي، تنهنڪري ان لاء عمل درآمد سان هڪ الڳ، مڪمل ڪلاس ٺاهڻ جي ضرورت ناهي. ان جي بدران، هڪ سادي طريقي سان، اسان هڪ گمنام ڪلاس ذريعي گهربل طريقي سان عمل ڪيو، هن اعتراض کي استعمال ڪيو ۽ ان جي باري ۾ وساريو (چڱو، گندي ڪليڪٽر ان جي باري ۾ ياد ڪيو). هي ۽ هيجاوا ڊولپر لاءِ انٽرويوز کان سوالن ۽ جوابن جو تجزيو.  حصو 5 - 8 مضمون توهان کي وڌيڪ تفصيل سان اندروني ڪلاسن جو مطالعو ڪرڻ ۾ مدد ڏيندو .

51. ڪنهن طبقي کي ڪهڙي رسائي جي تبديلي آڻي سگهي ٿي؟

جيئن ته اسان کي ياد آهي، اتي مختلف قسم جا طبقا آهن ۽ مختلف رسائي جي ترميمي انهن تي لاڳو آهن:
  • هڪ ٻاهرين طبقي وٽ رسائي موڊيفائر عوامي هجي يا بغير ڪنهن موڊيفائر (ڊفالٽ موڊيفائر) جي هجي؛
  • اندروني ڪلاس سڀني 4 رسائي جي تبديلين کي سپورٽ ڪري ٿو.
  • nested static class سڀني پهچ مٽائيندڙن کي سپورٽ ڪري ٿو سواءِ محفوظ ، ڇاڪاڻ ته هي ترميمي وراثت جو مطلب آهي، جيڪو ڪلاس جي جامد ميمبر جي مخالفت ڪري ٿو (جامد عناصر وراثت ۾ نه آهن)؛
  • مقامي ڪلاس ۾ صرف هڪ ڊفالٽ موڊيفائر ٿي سگهي ٿو (يعني ڪو به ترميم ڪندڙ نه)؛
  • گمنام طبقو : جيڪڏهن ڪو به ڪلاس قسم جو اعلان نه آهي، ته پوء اتي ڪو به رسائي تبديل ڪندڙ نه آهن.
اهو آهي جتي اسان اڄ بند ڪنداسين. جلد ئي ملون ٿا!جاوا ڊولپر لاءِ انٽرويوز کان سوالن ۽ جوابن جو تجزيو.  حصو 5 - 9
سيريز ۾ ٻيا مواد:
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION