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

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

گروپ ۾ شايع ٿيل
سڀني کي هيلو، اڄ مان جاوا ڊولپر لاءِ 250+ انٽرويو سوالن جو تجزيو ڪرڻ جاري رکان ٿو. جاوا ڊولپر لاءِ انٽرويوز کان سوالن ۽ جوابن جو تجزيو.  حصو 4 - 1تجزيو جا پويون حصا: پهريون ، ٻيو ، ٽيون . سو اچو ته جاري رکون.

29. ڇا اهو ممڪن آهي واپسي استعمال ڪرڻ هڪ تعمير ڪندڙ ۾؟

توهان ڪري سگهو ٿا، پر واپسي جي ساڄي طرف واپسي جي قيمت کان سواء . اهو آهي، توهان واپسي استعمال ڪري سگهو ٿا؛ هڪ معاون تعمير جي طور تي تعمير ڪندڙ ۾ حسابن جي دوران، فوري طور تي وڌيڪ ڪوڊ جي عمل کي ختم ڪرڻ (روکڻ) ۽ اعتراض جي شروعات کي مڪمل ڪرڻ لاء. مثال طور، اسان وٽ هڪ ڪلاس Cat آهي ، ۽ جيڪڏهن ٻلي بي گهر آهي - isHomeless = سچ ، اسان کي شروعات کي ختم ڪرڻ ۽ ٻين شعبن کي نه ڀرڻ جي ضرورت آهي (آخرڪار، اهي اسان کي اڻڄاتل آهن، ڇو ته ٻلي بي گهر آهي):
public Cat(int age, String name, boolean isHomeless) {
   if (isHomeless){
       this.isHomeless = isHomeless;
       return;
   }
   this.isHomeless = isHomeless;
   this.age = age;
   this.name = name;
}
پر جڏهن اهو مخصوص قدرن تي اچي ٿو، هڪ تعمير ڪندڙ واپسي کي واپس ڪرڻ لاء واپسي استعمال نٿو ڪري سگهي ڇاڪاڻ ته:
  • جڏهن هڪ تعمير ڪندڙ جو اعلان ڪندي توهان وٽ ڪجهه به نه هوندو جيڪو واپسي جي قسم وانگر هوندو؛
  • عام طور تي، تعمير ڪندڙ کي institiation دوران implicitly سڏيو ويندو آهي؛
  • هڪ تعمير ڪندڙ هڪ طريقو ناهي: اهو هڪ الڳ ميکانيزم آهي جنهن جو واحد مقصد مثال جي متغير کي شروع ڪرڻ آهي، ۽ نئون آپريٽر هڪ اعتراض ٺاهڻ جو ذميوار آهي .
جاوا ڊولپر لاءِ انٽرويوز کان سوالن ۽ جوابن جو تجزيو.  حصو 4 - 2

30. ڇا اھو ممڪن آھي ھڪڙي ٺاھيندڙ کان استثنا اڇلائي؟

ٺاھڻ وارا استثنا سان ڊيل ڪندا آھن بلڪل ساڳي طرح طريقن سان. ۽ جيڪڏهن طريقا اسان کي اجازت ڏين ٿا استثنون اڇلڻ جي ذريعي لکڻ سان throws <ExceptionType> ميٿڊ هيڊر ۾ ، پوءِ تعمير ڪندڙ اسان کي اهو ڪرڻ جي اجازت ڏئي ٿو، ۽ پڻ جڏهن وارث تعمير ڪندڙ وارث ۽ وضاحت ڪريون ٿا، اسان استثنا جي قسم کي وڌائي سگهون ٿا. مثال طور، IOException -> استثنا (پر ان جي برعڪس). مثال طور هڪ تعمير ڪندڙ طرفان استثنا اڇلائڻ لاءِ، اچو ته Cat class وٺون . اچو ته چئو ته ان کي ٺاهڻ وقت اسان ڪنسول مان نالو ۽ عمر داخل ڪرڻ چاهيون ٿا:
public Cat() throws IOException {
   BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
   this.name = reader.readLine();
   this.age = Integer.parseInt(reader.readLine());
}
جيئن ته reader.readLine() هڪ IOException اڇلائي ٿو، اسان ان کي هيڊر ۾ بيان ڪريون ٿا ممڪن طور تي اڇلائي استثنا.

31. ڪلاس هيڊر ڪهڙن عنصرن تي مشتمل آهي؟ هڪ مثال لکو

انهن عناصر جي ڳالهائيندي جيڪي ڪلاس هيڊر ٺاهيندا آهن، اچو ته هڪ ننڍڙو ڊراگرام ڏسو:
  • لازمي جزا بریکٹ ۾ هوندا <>
  • اختياري - ۾ {}
{طبقاتي رسائي موڊيفائير}طبقاتي جامدت}ڪلاس فائنلٽي}ڪلاس ايبسٽريشن} <ڪلاس جو نالو>{والدين طبقي کان وراثت} {انٽرفيس لاڳو ڪرڻ} تنهن ڪري، اسان وٽ ڇا آهي: {ڪلاس رسائي موڊيفائر} - صرف عوامي موڊيفائر ۽ غائب رسائي موڊيفائر، اهو آهي، ڊفالٽ، ڪلاس لاءِ موجود آهن . {طبقاتي جامد} - جامد ھڪڙو تبديل ڪندڙ آھي جيڪو اشارو ڪري ٿو ته ھي طبقو جامد آھي، صرف اندروني طبقن تي لاڳو ٿئي ٿو (ٻين طبقن اندر طبقن). {class finality} - جيئن اسان کي ياد آهي، هي آهي حتمي ترميم ڪندڙ ، جنهن جي موجودگي ۾ ڪلاس غير وراثت ۾ اچي ٿو (مثال طور باڪس مان - String ). {طبقاتي تجزيه} - تبديل ڪندڙ - خلاصو ، جيڪو ظاهر ڪري ٿو ته هن طبقي ۾ غير لاڳو ٿيل طريقا هوندا. هي ترميم ڪندڙ فائنل موڊيفائر سان ٽڪراءُ ڪري ٿو ، يعني، انهن مان صرف هڪ ڪلاس هيڊر ۾ ٿي سگهي ٿو، ڇو ته خلاصي موڊيفائر جو مطلب آهي ته ڏنل ڪلاس ورثي ۾ ملندو ۽ ان جا خلاصا حصا لاڳو ڪيا ويندا. ۽ حتمي ظاهر ڪري ٿو ته هي ڪلاس جو آخري (فائنل) نسخو آهي، ۽ اهو وارث نه ٿو ٿي سگهي. دراصل، هڪ ئي وقت ۾ ٻنهي موڊيفائر کي استعمال ڪرڻ بيڪار هوندو، ۽ مرتب ڪندڙ اسان کي ائين ڪرڻ جي اجازت نه ڏيندو. <class> ھڪ گھربل لفظ آھي جيڪو ظاھر ڪري ٿو ڪلاس ڊڪليئريشن. <class name> هڪ سادي ڪلاس جو نالو آهي، جيڪو هڪ مخصوص جاوا ڪلاس جي سڃاڻپ ڪندڙ آهي. مڪمل طور تي قابل ڪلاس جو نالو مڪمل طور تي قابليت واري پئڪيج جي نالي تي مشتمل آهي + . + سادي طبقي جو نالو. {وراثت مان والدين طبقي} - وضاحت ڪريو والدين طبقي (جيڪڏهن ڪو به هجي) استعمال ڪندي extensions لفظ . مثال طور، .. وڌائي ٿو ParentClass . {انٽرفيس تي عمل درآمد} - انٽرفيس جي وضاحت ڪرڻ جيڪي هي ڪلاس لاڳو ڪري ٿو (جيڪڏهن ڪو به هجي) انفارميشن ڪي ورڊ استعمال ڪندي . مثال طور: ... فرسٽ انٽرفيس، سيڪنڊ انٽرفيس کي لاڳو ڪري ٿو ... خير، ڪلاس هيڊر جي مثال طور، شعر ڪلاس جي هيڊر تي غور ڪريو ، جيڪو Cat کان ورثي ۾ ملي ٿو ۽ WildAnimal انٽرفيس کي لاڳو ڪري ٿو :
public final class Lion extends Cat implements WildAnimal
جاوا ڊولپر لاءِ انٽرويوز کان سوالن ۽ جوابن جو تجزيو.  حصو 4 - 3

32. طريقو هيڊر ڪهڙن عنصرن تي مشتمل آهي؟ هڪ مثال لکو

ٻيهر، جڏهن عناصر کي ڏسي رهيا آهيو جيڪي هڪ طريقو هيڊر ٺاهي رهيا آهن، هڪ ننڍڙو آريگرام تي غور ڪريو جتي:
  • لازمي اجزاء بریکٹ ۾ آهن <>
  • اختياري - ۾ {}
{رسائي موڊيفائر{طريقي جامد}طريقي خلاصي{طريقي حتمي}} هم وقت سازي موڊيفائر} {مقامي تبديل ڪندڙ<return value>طريقي جو نالو> <(> {طريقي دليل} <)>{ڇڪي استثنا} {رسائي موڊيفائر } - سڀ رسائي موڊيفائرز دستياب آھن ھن طريقي لاءِ: عوامي ، محفوظ ، ڊفالٽ ، پرائيويٽ . {طريقو جامد} - جامد ھڪڙو تبديل ڪندڙ آھي جيڪو ظاھر ڪري ٿو ته ھي طريقو جامد آھي، اھو آھي، اھو ھڪڙي شيء سان نه، پر ھڪڙي طبقي سان ڳنڍيل آھي. {طريقي تجزيه} خلاصو موڊيفائر آهي ، جيڪو ظاهر ڪري ٿو ته طريقي جو ڪو به عمل (جسم) ناهي. صحيح آپريشن لاءِ، توھان کي ضرورت آھي ھڪڙو خلاصو موڊائيفائر ان طبقي لاءِ جنھن ۾ طريقو مهيا ڪيو ويو آھي. جيئن ته ڪلاس هيڊر ۾، هي ترميم ڪندڙ فائنل موڊيفائر سان ٽڪراءُ ڪري ٿو ، پر ان کان علاوه، اهو به جامد موڊيفائر سان ٽڪراءُ ڪري ٿو ، ڇاڪاڻ ته هڪ تجريدي طريقي جو مطلب آهي ته طريقي کي نسل ۾ ختم ڪرڻ، ۽ جامد طريقا ختم نه ڪيا ويا آهن. {طريقي جي آخري حد} - حتمي - هڪ ترميم ڪندڙ اهو ظاهر ڪري ٿو ته هن طريقي کي ختم نٿو ڪري سگهجي. { synchronization modifier } - هم وقت سازي - هڪ موڊيفائر جنهن جو مطلب آهي ته هي طريقو مختلف موضوعن کان هڪ ئي وقت تائين رسائي کان محفوظ آهي. جيڪڏهن طريقو جامد نه آهي، اهو اعتراض جي هن ميوٽڪس تي بند ڪري ٿو. جيڪڏهن طريقو جامد آهي، اهو موجوده طبقي جي ميوٽڪس تي بند ڪري ٿو. {مقامي تبديل ڪندڙ} - اصلي - هي ترميم ڪندڙ اشارو ڪري ٿو ته طريقو مختلف پروگرامنگ ٻولي ۾ لکيو ويو آهي. <return value> قدر جو قسم آھي جيڪو طريقو موٽڻ گھرجي. جيڪڏهن اهو ڪجهه به واپس نه ڪرڻ گهرجي، باطل . <طريقو جو نالو> طريقو جو نالو آهي، سسٽم ۾ ان جي سڃاڻپ ڪندڙ. {طريقي دليل} اهي دليل (پيراميٽر) آهن جيڪي طريقا وٺن ٿا: اهي ضروري آهن ان جي ڪارڪردگي کي لاڳو ڪرڻ لاءِ. {throwable exceptions} - throwsExceptionType - چيڪ ڪيل استثنان جي هڪ فهرست جيڪا هي طريقو اڇلائي سگهي ٿي. ۽ هڪ طريقو هيڊر جي مثال طور، مان هي ڏيندس:
public static void main(String[] args) throws IOException

33. ڊفالٽ ڪنسٽرڪٽر ٺاھيو Descendant Object ۾ جيڪڏھن اھو بيس اعتراض ۾ بيان نه ڪيو ويو آھي (پر ٻيو ٺاھيندڙ بيان ڪيل آھي)

مان پاڻ کي مڪمل طور تي سوال نه ٿو سمجهان، پر شايد ان جو مطلب اهو آهي ته، مثال طور، والدين ۾ اسان وٽ ڪجهه ڪسٽم تعمير ڪندڙ آهن:
public Cat(int age, String name) {
   this.age = age;
   this.name = name;
}
تنهن ڪري، ابن ڏاڏن جي طبقي ۾، اسان کي يقيني طور تي هڪ تعمير ڪندڙ جي وضاحت ڪرڻ جي ضرورت آهي جيڪو ڀريندو (ڪال) والدين تعمير ڪندڙ:
public  class Lion extends Cat {

   public Lion(int age, String name) {
       super(age, name);
   }
}
جاوا ڊولپر لاءِ انٽرويوز کان سوالن ۽ جوابن جو تجزيو.  حصو 4 - 4

34. هي لفظ ڪڏهن استعمال ٿيندو آهي؟

جاوا ۾، هي ٻه مختلف معنائون آهن. 1. موجوده اعتراض جي حوالي سان، هيئن .age = 9 . اهو آهي، اهو ان اعتراض ڏانهن اشارو ڪري ٿو جنهن تي ان کي سڏيو ويو آهي ۽ جنهن کي استعمال ڪندي ڪوڊ هن ڏانهن اشارو ڪيو ويو آهي . بنيادي ڪم ڪوڊ پڙهڻ جي صلاحيت کي وڌائڻ ۽ مونجهاري کان بچڻ آهي. مثال طور، جيڪڏهن اندروني طبقي جي فيلڊ جو نالو ۽ طريقو دليل ساڳيو آهي:
public void setName(String name) {
   this.name = name;
}
يعني، this.name اعتراض جو هڪ ميدان آهي نالو هڪ طريقو دليل آهي، هي حوالو جامد طريقن ۾ استعمال نٿو ڪري سگهجي. 2. ھي ھڪڙي ٺاھيندڙ ۾ ميٿڊ ڪال جي صورت ۾ استعمال ڪري سگھجي ٿو، جھڙوڪ this(value) . انهي حالت ۾، اهو ساڳيو طبقي جي ڪنهن ٻئي تعمير ڪندڙ کي سڏيندو. مختصر ۾، توهان هڪ ڀيرو ٻه تعمير ڪندڙن کي سڏي سگهو ٿا جڏهن هڪ اعتراض ٺاهيو:
public Cat(int age, String name) {
   this(name);
   this.age = age;
}

public Cat(String name) {
   this.name = name;
}
جڏهن هڪ ٻلي شئي ٺاهي ويندي آهي ۽ پهريون تعمير ڪندڙ سڏيو ويندو آهي، اعتراض جي ٻنهي شعبن کي سڏيو ويندو ۽ ڪاميابي سان شروع ڪيو ويندو. اتي ڪجھ nuances آهن:
  1. هي () صرف تعمير ڪندڙ ۾ ڪم ڪري ٿو.
  2. هڪ ٻئي تعمير ڪندڙ جو حوالو لازمي طور تي تعمير ڪندڙ بلاڪ (جسم) جي پهرين قطار ۾ هجڻ گهرجي. تنهن ڪري، ڏنل طبقي جي هڪ کان وڌيڪ (ٻين) تعمير ڪندڙ کي هڪ تعمير ڪندڙ ۾ نه ٿو سڏيو وڃي.
جاوا ڊولپر لاءِ انٽرويوز کان سوالن ۽ جوابن جو تجزيو.  حصو 4 - 5وڌيڪ مثال هن مضمون ۾ آهن .

35. شروعات ڪندڙ ڇا آهي؟

جيتري قدر مان سمجهان ٿو، هن سوال ۾ اسان عام ۽ شمارياتي شروعاتي بلاڪ بابت ڳالهائي رهيا آهيون. پهرين، اچو ته ياد رکون ته شروعات ڇا آهي. شروعات آهي تخليق، چالو ڪرڻ، ڪم جي تياري، پيٽرول جو تعين. ھڪڙي پروگرام يا جزو کي استعمال لاء تيارگي جي حالت ۾ آڻڻ. جئين توهان کي ياد آهي، اعتراض جي تخليق دوران، هڪ طبقي متغير سڌو سنئون اعلان تي شروع ڪري سگهجي ٿو:
class Cat {
   private int age = 9;
   private  String name = "Tom";
يا ان کي ٺاھيندڙ ذريعي خارجي طور تي سيٽ ڪريو:
class Cat {
   private int age;
   private  String name;

   public Cat(int age, String name) {
       this.age = age;
       this.name = name;
   }
پر ھڪڙو ٻيو طريقو آھي: ھڪڙي شروعاتي بلاڪ جي ذريعي ھڪڙي اندروني شئي متغير کي سيٽ ڪرڻ لاء، جيڪو ڪلاس جي اندر گھمڻ وارو braces { } وانگر نظر اچي ٿو ، بغير نالو (جهڙوڪ طريقو يا ٺاھيندڙ):
class Cat {
   private int age;
   private  String name;

   {
       age = 10;
       name = "Tom";
   }
اهو آهي، هڪ شروعاتي بلاڪ ڪوڊ جو هڪ ٽڪرو آهي جيڪو لوڊ ڪيو ويندو آهي جڏهن هڪ اعتراض ٺاهيو ويندو آهي. عام طور تي، اهڙا بلاڪ استعمال ڪيا ويندا آهن ڪجهه پيچيده حسابن کي انجام ڏيڻ لاءِ جيڪي ڪلاس لوڊ ڪرڻ وقت ضروري هوندا آهن. انهن حسابن جا نتيجا متغيرن لاءِ قدرن جي طور تي بيان ڪري سگھجن ٿا. ان کان علاوه، باقاعده شروعاتي بلاڪ کان علاوه، جامد آهن، جيڪي هڪجهڙا نظر اچن ٿا، پر جامد لفظ کي گھمڻ واري ڪنگڻ کان اڳ آهي :
class Cat {
   private static int age;
   private static String name;

   static{
       age = 10;
       name = "Tom";
   }
هي بلاڪ بلڪل ساڳيو آهي جيئن اڳئين هڪ. پر جيڪڏهن هر شئي جي شروعات ٿيڻ تي باقاعده هڪ ٽاريو ويندو آهي، ته جامد هڪ صرف هڪ ڀيرو ٽاريندو، جڏهن ڪلاس لوڊ ڪيو ويندو آهي. اهڙي بلاڪ ۾، ضابطي جي طور تي، جامد طبقي متغيرن جي ايندڙ شروعات لاءِ ڪي پيچيده حساب ڪتاب پڻ ڪيا ويندا آهن. ساڳئي پابنديون جامد بلاڪ تي لاڳو ٿين ٿيون جيئن جامد طريقن تي: اهو غير جامد ڊيٽا استعمال نٿو ڪري سگهي، انهي سان گڏ موجوده اعتراض جو حوالو - هي . جاوا ڊولپر لاءِ انٽرويوز کان سوالن ۽ جوابن جو تجزيو.  حصو 4 - 6اڳيون، اسين ڪلاس جي شروعات جي ترتيب کي ڏسي سگھون ٿا (ان جي اباڻي سان گڏ) ان لمحي کي بهتر سمجهڻ لاءِ جڏهن شروعاتي بلاڪ شروع ڪيا ويندا آهن.

36. وراثت حاصل ڪرڻ لاءِ هڪ ڪلاس پبلڪ ڪلاس چائلڊ کي وڌايو والدين، لکو آرڊر جي شروعات جو اعتراض

جڏهن چائلڊ ڪلاس لوڊ ڪيو ويندو، شروعاتي ترتيب هن ريت هوندي:
  1. والدين طبقي جا جامد شعبا .
  2. والدين طبقي لاءِ جامد شروعاتي بلاڪ .
  3. چائلڊ ڪلاس جا جامد شعبا .
  4. چائلڊ ڪلاس لاءِ جامد شروعاتي بلاڪ .
  5. والدين طبقي جا غير جامد شعبا .
  6. والدين طبقي لاءِ جامد شروعاتي بلاڪ نه آهي .
  7. والدين طبقي لاءِ ٺاھيندڙ .
  8. چائلڊ ڪلاس جا غير جامد شعبا .
  9. چائلڊ ڪلاس لاءِ جامد شروعاتي بلاڪ ناهي .
  10. ٻاراڻي طبقي جو ٺاھيندڙ .
جاوا ڊولپر لاءِ انٽرويوز کان سوالن ۽ جوابن جو تجزيو.  حصو 4 - 7هتي هڪ مختصر مضمون آهي جيڪو بيان ڪري ٿو شروعاتي ترتيب کي عملي طور تي.

37. توهان طبقن جي وچ ۾ ڪهڙا رشتا ڄاڻو ٿا (شيون)؟

جاوا ۾ طبقن جي وچ ۾ تعلق جا ٻه قسم آهن:
  • IS-A تعلق
OOP ۾ IS-A اصول طبقاتي ورثي يا انٽرفيس تي عمل ڪرڻ تي ٻڌل آھي. مثال طور، جيڪڏهن شعر جو طبقو Cat کان ورثي ۾ ملي ٿو ، ته اسان چئون ٿا ته شعر Cat is :
Lion IS-A Cat
(پر هر ٻلي هڪ شعر ناهي ) صورتحال بلڪل ساڳي آهي انٽرفيس سان. جيڪڏهن شعر طبقو WildAnimal انٽرفيس کي لاڳو ڪري ٿو ، پوء اهي پڻ هڪ تعلق ۾ آهن:
Lion IS-A WildAnimal
  • HAS-A تعلقات
هن قسم جو تعلق ٻين طبقن جي طبقن جي استعمال تي ٻڌل آهي، جنهن کي پڻ سڏيو ويندو آهي "انجمن". هڪ انجمن هڪ طبقو آهي جيڪو ٻئي طبقي جي حوالي ڪري ٿو (يا اڃا به هڪ ٻئي). مثال طور، ڪار ڪلاس مسافر طبقي ڏانهن اشارو ڪري سگهي ٿو ، ۽ اهو تعلق هوندو:
Car HAS-A Passenger
۽ ان جي برعڪس: جيڪڏهن مسافر وٽ ڪار جو حوالو آهي ، ته پوءِ اهو تعلق هوندو:
Passenger HAS-A Car

38. توهان کي خبر آهي ته شين جي وچ ۾ ڪهڙن لاڳاپن جو تعلق آهي؟

مجموعي ۽ ٺهڪندڙ انجمن جي خاص ڪيسن کان سواء ٻيو ڪجهه ناهي. مجموعي هڪ تعلق آهي جتي هڪ شئي ٻئي جو حصو آهي. مثال طور، هڪ مسافر ڪار ۾ ٿي سگهي ٿو. ان کان علاوه، اتي ڪيترائي مسافر ٿي سگھن ٿا يا سڀ ڪجھ نه (جيڪڏھن اسان Tesla بابت ڳالھائي رھيا آھيون، پوء ڊرائيور جي ضرورت نه آھي). مثال طور:
public class Car {
   private List passengers = new ArrayList<>();

 void setPassenger(Passenger passenger) {
     passengers.add(passenger);
 }

   void move() {
       for (Passenger passenger : passengers) {
           System.out.println("Перевозка пассажира - " + passenger.toString());
       }
       passengers.clear();
   }
}
اھو آھي، اسان مسافرن جي تعداد جي پرواھ نه ڪندا آھيون (يا ڇا اتي ڪو به آھن): ڪار ڪلاس جي ڪارڪردگي ھن تي منحصر نه آھي. Aggregation اهو به مطلب آهي ته جڏهن هڪ شئي ٻي شئي طرفان استعمال ٿئي ٿي، پهرين هڪ کي ٻين شين ۾ استعمال ڪري سگهجي ٿو. مثال طور، هڪ ئي شاگرد ٻنهي جو ميمبر ٿي سگهي ٿو بنان جي ڪلب ۽ راڪرز جي هڪ ميوزڪ گروپ، ۽ ساڳئي وقت انگريزي سکندڙن جي هڪ گروپ ڏانهن وڃو. جئين توھان سمجھو ٿا، مجموعو طبقن جي وچ ۾ ھڪڙو لوزر ساٿي تعلق آھي. جاوا ڊولپر لاءِ انٽرويوز کان سوالن ۽ جوابن جو تجزيو.  حصو 4 - 8ساخت هڪ وڌيڪ سخت تعلق آهي، جڏهن هڪ شئي نه رڳو ٻي شئي جو حصو آهي، پر ٻي شئي جو ڪم پهرين تي تمام گهڻو منحصر هوندو آهي. مثال طور، هڪ ڪار انجڻ. جيتوڻيڪ انجڻ ڪار کان سواء موجود ٿي سگهي ٿو، ان جي ٻاهران بيڪار آهي. خير، هڪ ڪار انجڻ کان سواء ڪم نه ٿا ڪري سگهو:
public class Car {
   private Engine engine;

   public Car(Engine engine) {
       this.engine = engine;
   }

   void startMoving() {
       engine.start();
           ...
   }
ڪمپوزيشن جو مطلب اهو به آهي ته جڏهن ڪا شئي ٻي شئي استعمال ڪندي آهي، ته پھرين جو تعلق ڪنهن ٻئي سان نه هوندو آهي. جيڪڏهن اسان پنهنجي مثال ڏانهن واپس وڃو، هڪ انجڻ صرف هڪ ڪار سان تعلق رکي سگهي ٿو، پر ساڳئي وقت ٻه يا وڌيڪ نه. اسان شايد اڄ هتي روڪينداسين.جاوا ڊولپر لاءِ انٽرويوز کان سوالن ۽ جوابن جو تجزيو.  حصو 4 - 9
سيريز ۾ ٻيا مواد:
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION