CodeGym /جاوا بلاگ /Random-SD /جاوا ڊولپر پوزيشن لاءِ نوڪري جي انٽرويو کان سوالن ۽ جوابن...
John Squirrels
سطح
San Francisco

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

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

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

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

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

بنيادي فرق اهو آهي ته جامد طريقا هڪ طبقي سان تعلق رکن ٿا. حقيقت ۾، توهان کي هن طبقي جو هڪ مثال ٺاهڻ جي ضرورت ناهي - جامد طريقن کي صرف طبقي قسم مان سڏي سگهجي ٿو. مثال طور، فرض ڪريو اسان وٽ ٻلي پالڻ لاءِ جامد طريقو آهي:
public class CatService {
   public static void petTheCat(Cat cat) {
       System.out.println("Pet the cat: " + cat.getName());
   }
اسان کي ان کي سڏڻ لاءِ CatService ڪلاس جي مثال جي ضرورت ناهي :
Cat cat = new Cat(7, "Bobby");
CatService.petTheCat(cat);
ان جي ابتڙ، عام طريقا پابند آهن (متعلق) هڪ اعتراض سان. انھن کي سڏڻ لاءِ، توھان وٽ ھڪڙو مثال (آبجڪٽ) ھئڻ گھرجي جنھن تي طريقو سڏيو ويندو. مثال طور، فرض ڪريو اسان جي ٻلي وٽ غير جامد طريقو آهي meow() :
class Cat {
   public void meow() {
       System.out.println("Meow! Meow! Meow!");
   }
هن طريقي کي سڏڻ لاء، اسان کي ٻلي جي هڪ مخصوص مثال جي ضرورت آهي:
Cat cat = new Cat(7, "Bobby");
cat.meow();

41. ڪهڙيون مکيه پابنديون آهن جيڪي جامد ۽ غير جامد طريقن تي لاڳو ٿين ٿيون؟

جيئن مون اڳ ۾ چيو آهي، هڪ عام (غير جامد) طريقي جي بنيادي حد اها آهي ته اتي هميشه ڪجهه مثال هجڻ گهرجي جنهن تي طريقو سڏيو ويندو آهي. پر هڪ جامد طريقو هن جي ضرورت ناهي. اضافي طور تي، هڪ جامد طريقو استعمال نٿو ڪري سگھي هن حوالي کي ڪنهن شئي جي عناصرن جي حوالي سان، هاڻي هڪ موجوده اعتراض طريقي سان موجود آهي.

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

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

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

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

44. ڇا جامد طريقن کي غير جامد طريقن جي وچ ۾ استعمال ڪري سگهجي ٿو؟ ۽ ان جي برعڪس؟ ڇو؟

اسان جامد طريقن کي غير جامد طريقن ۾ استعمال ڪري سگھون ٿا. ڪجھ به نه روڪيندو آهي. اهو چيو ته، سامهون ممڪن ناهي: هڪ جامد طريقو هڪ غير جامد طريقو استعمال نٿو ڪري سگهي بغير ڪنهن مخصوص مثال جي حوالي ڪرڻ کان سواء. ياد رکو، ڪنهن طبقي جي جامد ميمبرن کي هن حوالي تائين پهچ نه آهي : توهان وٽ ڪلاس جون ڪيتريون ئي ڪنڪريٽ شيون هجن، جيئن توهان چاهيو، ۽ انهن مان هر هڪ ۾ هي حوالو هوندو ، جيڪو هڪ خود حوالو آهي. پوء ڪيئن اندازو لڳايو ته هي حوالو استعمال ڪرڻ لاء؟ ها، توهان نٿا ڪريو. اهو ئي سبب آهي ته جامد عنصرن غير جامد عنصرن کي ڪنهن خاص شئي جي حوالي کان سواءِ حوالو نٿا ڏئي سگهن. بنيادي طور تي، هڪ جامد طريقو هڪ غير جامد طريقو استعمال ڪري سگهي ٿو صرف ان صورت ۾ جڏهن اهو هڪ مخصوص اعتراض جو حوالو آهي. مثال طور، ھڪڙو جيڪو طريقو دليل طور آيو آھي:
public static void petTheCat(Cat cat) {
   System.out.println("Pet the cat: " + cat.getName());
}
هتي اسان ڏسون ٿا ته جامد petTheCat() طريقي ۾ getName سڏين ٿا، هڪ Cat اعتراض جو هڪ عام غير جامد طريقو .

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

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

   @Override
   public void speak() {
       System.out.println("Meow! Meow! Meow!");
   }
}
انٽرفيس استعمال ڪرڻ بابت ڄاڻڻ لاءِ هتي اهم مکيه شيءِ آهي:
  1. انٽرفيس طريقن ۾ صرف هڪ هيڊر هجڻ گهرجي. انهن کي هڪ مخصوص طريقو جسم نه هجڻ گهرجي، يعني اهي لازمي هجن (جيتوڻيڪ اهي خلاصو لفظ استعمال نٿا ڪن ). هتي استثنا آهن: جامد طريقا ۽ ڊفالٽ طريقا، جن کي هڪ طريقي جي جسم جي ضرورت آهي.

  2. ھڪڙو طبقو ڪيترن ئي انٽرفيس کي لاڳو ڪري سگھي ٿو (جيئن مون چيو آھي، انٽرفيس گھڻن وراثت جو متبادل آھن). انٽرفيس جا نالا ڪاما ذريعي الڳ ڪيا ويا آهن طريقي جي هيڊر ۾: class Lion لاڳو ڪري ٿو Animal, Wild .

  3. انٽرنيٽ ڪي ورڊ استعمال ڪندي انٽرفيس ٺاهيا ويا آهن .

  4. جڏهن هڪ ڪلاس هڪ انٽرفيس کي لاڳو ڪري ٿو، اسان استعمال ڪندا آهيون ايپليٽس ڪي ورڊ.

  5. ھڪڙو طبقو جيڪو ھڪڙي خاص انٽرفيس کي لاڳو ڪري ٿو، ان کي لازمي طور تي ان جي سڀني تجريدي طريقن کي لاڳو ڪرڻ گھرجي، يا پاڻ کي خلاصو بيان ڪرڻ گھرجي.

  6. انٽرفيس استعمال ڪرڻ جو بنيادي مقصد پوليمورفيزم کي لاڳو ڪرڻ آهي (هڪ اعتراض کي ڪيترن ئي شڪلن تي آڻڻ جي صلاحيت ڏيڻ).

  7. ضابطي جي طور تي، طريقن جي رسائي جي تبديلين کي انٽرفيس ۾ اشارو نه ڪيو ويو آهي: اهي ڊفالٽ طور تي عوامي آهن، ۽ توهان عوام کان سواء ٻيو ترميمي بيان نه ڪري سگهو ٿا . جاوا 9 سان شروع ڪندي، توھان استعمال ڪري سگھو ٿا خانگي موڊيفيرز طريقن تي.

  8. ڊفالٽ طور، انٽرفيس متغير جامد حتمي آهن . ٻين لفظن ۾، اهي مستقل آهن - انهن کي هميشه انٽرفيس ۾ سڌو سنئون شروع ڪيو وڃي.

  9. توهان انٽرفيس جو مثال نه ٺاهي سگهو ٿا.

سوال جو جواب ته ڇا انٽرفيس حتمي ٿي سگهي ٿو، يقينا، نه. درحقيقت، انٽرفيس هجڻ جو سڄو نقطو انهن تي عمل ڪرڻ لاء آهي. ۽ جيئن ته اسان سڀني کي چڱيءَ طرح ياد آهي، ڪلاس جي سطح تي حتمي ترميم ڪندڙ هڪ طبقي کي وراثت ۾ نه آڻيندو آهي، ۽ انٽرفيس جي صورت ۾ - قابل عمل نه آهي. ڇو اسان کي هڪ انٽرفيس جي ضرورت پوندي جيڪا اسان لاڳو ۽ استعمال نٿا ڪري سگهون؟ توهان صحيح آهيو - اسان نه ڪنداسين! ۽ مرتب ڪندڙ متفق آهن. :) جاوا ڊولپر پوزيشن لاءِ نوڪري جي انٽرويو کان سوالن ۽ جوابن جي ڳولا.  حصو 5 - 3دراصل، جاوا 8 کان جامد انٽرفيس طريقن جي تعارف سان، اتي هڪ نقطو ٿي سگهي ٿو، پر اهو حقيقت کي تبديل نٿو ڪري ته هڪ انٽرفيس حتمي نه ٿي سگهي. مون صرف انٽرفيس جي باري ۾ تمام سطحي طور تي ڳالهايو آهي، ڇاڪاڻ ته هي هڪ وسيع موضوع آهي. هن تي وڌيڪ لاءِ، جاوا ۾ انٽرفيس تي آرٽيڪل ۽ خلاصي طبقن ۽ انٽرفيس جي وچ ۾ فرق ڏسو .

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

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

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

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

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

منهنجو خيال آهي ته هي هڪ گمراهه ڪندڙ سوال آهي، ممڪن طور تي هڪ چال سوال آهي، ڇاڪاڻ ته جاوا وٽ ابتدائي طبقن وانگر ڪا شيء ناهي. هتي صرف ابتدائي قسمن جو تصور آهي، جنهن تي اسان اڳ ۾ غور ڪيو. اسان کي ياد آهي ته جاوا ۾ 8 پرائمري قسمون آهن: byte , short , int , long , float , double , char , boolean .

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

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

50. نسٽڊ ڪلاس ڇا آهي؟ اهو ڪٿي استعمال ٿيندو آهي؟

نسٽڊ ڪلاس هڪ اهڙو طبقو آهي جيڪو پاڻ ڪنهن ٻئي طبقي جو ميمبر هوندو آهي. جاوا ۾ 4 قسم جا اهي nested ڪلاس آهن: 1. Inner class هن قسم جو ڪلاس سڌو سنئون ڪنهن ٻئي ڪلاس جي باڊي ۾ اعلان ڪيو ويندو آهي. هڪ اندروني طبقو هڪ غير جامد نسٽڊ ڪلاس آهي ۽ ڪنهن به خانگي فيلڊ يا ٻاهرين طبقي جي مثالي طريقي تائين رسائي ڪري سگهي ٿو. مثال طور، اچو ته ھڪڙو زو ٺاھيون جنھن ۾ ھڪڙو جانور آھي - ھڪڙو زيبرا:
public class Zoo {
   class Zebra {
       public void eat(String food) {
           System.out.println("Zebra eats " + food);
       }
   }
}
پيچيده نه، صحيح؟ اچو ته هڪ مثال تي هڪ نظر رکون ته اندروني طبقي جو هڪ مثال ٺاهيو:
Zoo.Zebra zebra = new Zoo().new Zebra();
zebra.eat("apple");
جيئن ته توهان اڳ ۾ ئي ڏٺو آهي، اهو ضروري آهي ته سڀ کان پهريان انڪوزنگ ڪلاس جو هڪ اعتراض ٺاهيو. پوء توھان استعمال ڪريو اعتراض جي حوالي سان اندروني طبقي جو ھڪڙو مثال ٺاھيو. مان اهو به ٻڌائڻ چاهيان ٿو ته هڪ اندروني طبقي (غير جامد نسٽڊ ڪلاس) ۾ جامد طريقا يا جامد فيلڊ نه هوندا . اهو خاص طور تي ان ڪري آهي جو اندروني طبقو واضح طور تي ان جي ٻاهرئين طبقي جي مثال سان جڙيل آهي، ۽ ان ڪري پنهنجي اندر ڪنهن به جامد طريقن جو اعلان نٿو ڪري سگهي. 2. Static nested classes اهي ڪلاس اڳئين ڪيٽيگريءَ سان ملندڙ جلندڙ آهن، پر انهن وٽ ڪلاس ڊيڪليئريشن ۾ جامد رسائي موڊيفائر آهي. جيئن ته هن قسم جي طبقي کي ٻاهرئين طبقي جي غير جامد شعبن تائين رسائي نه هوندي آهي، اهو اندروني طبقي جي ڀيٽ ۾ ٻاهرين طبقي جو جامد حصو وڌيڪ نظر ايندو آهي. پر هن طبقي کي ٻاهرين طبقي جي سڀني مستحڪم ميمبرن تائين پهچ آهي، حتي پرائيويٽ به. جامد نسٽڊ ڪلاس جو مثال:
public class Zoo {
   static class Zebra {
       public void eat(String food) {
           System.out.println("Zebra eats " + food);
       }
   }
}
اهو پوئين هڪ کان ٿورو مختلف ۾ ٺهيل آهي:
Zoo.Zebra zebra = new Zoo.Zebra();
zebra.eat("apple");
هتي اسان کي ٻاهرئين طبقي جي اعتراض جي ضرورت ناهي جامد نسٽڊ ڪلاس جو هڪ اعتراض ٺاهڻ لاءِ. اسان کي صرف nested طبقي جو نالو ڄاڻڻ جي ضرورت آهي ان کي ٻاهرئين طبقي ۾ ڳولڻ لاء. 3. مقامي طبقو مقامي طبقن وارا طبقا آهن جيڪي هڪ طريقي جي جسم جي اندر بيان ڪيا ويا آهن. لوڪل ڪلاس جون شيون ٺاهي سگھجن ٿيون ۽ استعمال ڪري سگھجن ٿيون صرف انڪولنگ واري طريقي ۾. مثال:
public class Zoo {
   public void feed(String animal, String food) {
       switch(animal) {
           case "zebra":
               class Zebra {
                   public void eat(String food) {
                       System.out.println("Zebra eats " + food);
                   }
               }
               Zebra zebra = new Zebra();
               zebra.eat(food);
               ...
هتي هڪ مثال آهي:
Zoo zoo = new Zoo();
zoo.feed("zebra", "apple");
جيڪڏهن توهان فيڊ() طريقي لاءِ ڪوڊ نه ڏٺو ، ته پوءِ توهان کي اهو به شڪ نه هوندو ته مقامي ڪلاس موجود آهي، ڇا توهان؟ مقامي طبقو جامد يا عارضي نه ٿو ٿي سگهي ، پر ان کي نشان لڳائي سگھجي ٿو خلاصو يا حتمي (هڪ يا ٻيو، پر ٻئي نه، ڇاڪاڻ ته هڪ ئي وقت انهن ٻن ترميمن کي استعمال ڪرڻ سان تڪرار پيدا ٿئي ٿو). 4. گمنام ڪلاس اسان اڳ ۾ ئي مٿي ڄاڻايل ڪلاسن جي باري ۾ ڳالهايو آهي، ۽ جيئن توهان کي ياد هوندو، اهي ٻن ذريعن کان ٺاهي سگھجن ٿا - انٽرفيس ۽ ڪلاس. انهن کي استعمال ڪرڻ جا سبب Nested جامد ۽ غير جامد طبقا استعمال ڪيا ويندا آهن ڇاڪاڻ ته ڪڏهن ڪڏهن اهو بهتر هوندو آهي ته ننڍن طبقن کي وڌيڪ عام طبقن ۾ شامل ڪيو وڃي ۽ انهن کي گڏ رکو ته جيئن انهن ۾ وڌيڪ هم آهنگي ۽ گڏيل مقصد هجي. بنيادي طور تي، nested طبقن توهان کي توهان جي ڪوڊ جي encapsulation وڌائڻ جي اجازت ڏئي ٿو. توهان شايد مقامي ڪلاس استعمال ڪرڻ جو انتخاب ڪري سگهون ٿا جيڪڏهن ڪلاس خاص طور تي هڪ واحد طريقي سان استعمال ڪيو وڃي. انهي حالت ۾، ڇا اسان کي ايپليڪيشن تي ڪوڊ پکيڙڻ جي ضرورت آهي؟ نه. اهو چيو ته، مان شامل ڪندس ته منهنجي تجربي ۾ مون ڪڏهن به ڪنهن کي مقامي طبقن کي استعمال ڪندي نه ڏٺو آهي، ڇاڪاڻ ته ڇا انهن جي ضرورت آهي يا نه، اهو تمام گهڻو تڪرار آهي. توهان شايد گمنام طبقن کي استعمال ڪري سگهون ٿا جڏهن هڪ انٽرفيس جي مخصوص عمل درآمد يا هڪ خلاصي طبقي کي صرف هڪ ڀيرو گهربل هجي. انهي صورت ۾، عمل درآمد سان هڪ الڳ، مڪمل ڪلاس ٺاهڻ جي ڪا ضرورت ناهي. ان جي بدران، اسان ان کي سادو رکيو ۽ ان طريقي تي عمل ڪيو جنهن کي اسان کي گمنام ڪلاس استعمال ڪرڻ جي ضرورت آهي، اعتراض استعمال ڪيو، ۽ پوء ان جي باري ۾ وساريو (يقينا، ڪچرو جمع ڪندڙ نه وساريو). نيسٽ ٿيل طبقن جي توهان جي سمجھ کي وڌايو ويندو هتي آرٽيڪل طرفان.

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

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