اگر کوڈنگ انٹرویو پر پوچھا گیا کہ ، "انٹرفیس اور تجریدی کلاس کے مابین بنیادی فرق کیا ہے" ، تو صحیح جواب کیا ہے؟


جواب 1:

زندہ انسان ، میں نے انھیں آدھا موت کے گھاٹ اتارا۔

میں واقعی میں "جواب نہیں جانتا" ، لیکن میں جانتا ہوں کہ میری رائے کیا ہے۔

میں انٹرفیس کو کالنگ کوڈ کے وعدے کے طور پر اس کی توقع کرسکتا ہوں۔ یہ خلاصہ ہے - بات جو ہمیشہ سچ ہوتی ہے ، چاہے آپ اسے کیسے نافذ کریں۔ میرے نزدیک ، یہ (عام طور پر) ایپلی کیشن ڈومین کی نمائندگی کرتا ہے۔

میری تازہ ترین مثال یہ ہے

انٹرفیس یوزر پروفائلز {
  اختیاری <پروفایل> بوجھ (یو یو ڈی اکاؤنٹ نمبر)؛
}

کالنگ کوڈ اکاؤنٹ کی ID فراہم کرتا ہے اور اگر دستیاب ہو تو اسے واپس پروفائل مل جاتا ہے۔

جب ہم کسی نظام میں منتقلی کرتے ہیں تو اس کے پاس اس وقت کئی طرح کے نفاذ ہیں۔ ہوسکتا ہے کہ یہاں ایک تجریدی کلاس مددگار ثابت ہو۔

ایک تجریدی کلاس میرے لئے ‘حسب ضرورت میکانزم’ کی نمائندگی کرتی ہے۔ یہ موضوعات کا حصہ نہیں ہے۔ ایک مؤکل کو فراہم کردہ خدمات کے وعدے کے طور پر اس پر بھروسہ نہیں کرنا چاہئے۔

یہ عمل درآمد کا حصہ ہے۔ خاص طور پر ، یہ عام نفاذ کا کوڈ ہے جو انٹرفیس کے دو یا زیادہ ممکنہ نفاذ کے درمیان مشترکہ ہے۔

ہمارے پاس ایک تجریدی کلاس ہوسکتی ہے

خلاصہ کلاس ڈیٹا بیس صارف استعمال کنندہ صارف پروفائلز imple
  اختیاری <پروفایل> بوجھ (یو یو ڈی اکاؤنٹ نمبر) {
    اسٹرنگ ڈیٹا بیس سپاسٹیفاسق = getQueryFindByAccountNumber (اکاؤنٹ نمبر)؛

    ایکزیکیٹ کیوری کو واپس کریں (ڈیٹا بیس سپیشل اسکوئل)؛
  }

  خلاصہ اسٹرنگ getQueryFindByAccountNumber (UID اکاؤنٹ نمبر)؛
}

اس خیالی مثال میں ، ہمارے پاس جوڑے SQL ڈیٹا بیس پروڈکٹ ہوں گے جو ہم نے پروفائلز کو اسٹور کرنے کے لئے معاونت کی ، اور ڈیٹا بیس کے مخصوص SQL کو واپس کرنے کے لئے GoF ‘ٹیمپلیٹ طریقہ’ getQueryFindByAccountNumber () کا استعمال کریں۔

عام ایس کیو ایل ڈیٹا بیس کے استعمال کے مشترکہ حصے اس تجریدی کلاس میں کہیں اور ہوں گے۔

تو ، ہاں ، میرے پاس واقعتا an ایک انٹرفیس ہوگا - سبجیکٹ / کلائنٹ کا وعدہ - اور اے بی سی (کبھی کبھی) مشترکہ عمل درآمد۔

پڑھنے کے قابل کے لئے دو مختلف مقاصد۔

اور ہاں ، چونکہ جاوا 8/9/10 کچھ بھی ہے ، یہ لائن اتنا ہی دھندلا ہوا ہے جتنا یہ پہلے سے C ++ میں تھا جب کہ آپ دونوں مقاصد کی تکمیل کے لئے اے بی سی کا استعمال کرسکتے ہیں ، میں نہیں چاہتا کہ یہ میرے پڑھنے والے کو نہیں پہنچا۔ کوڈ میں کیا کہنا چاہتا ہوں۔

میں توقع کرتا ہوں کہ اس مقام پر ، ہم سب تھوڑا سا بور نظر آتے ہیں اور تھوڑا سا وائٹ بورڈنگ کی طرف بڑھتے ہیں۔


جواب 2:

میرا اندازہ ہے کہ میں کہوں گا کہ انٹرفیس متعدد وراثت کی حمایت کرتا ہے اور تجریدی طبقے میں ایسا نہیں ہوتا ہے۔ دوسرا فرق یہ ہے کہ انٹرفیس کے تمام طریقوں کو خلاصہ ہونا چاہئے۔

انٹرفیس در حقیقت خود خلاصہ کلاس سے کہیں زیادہ خلاصہ ہے۔ اگر آپ کو ضرورت ہو تو ، آپ یہاں تک کہ ایک انٹرفیس بھی تشکیل دے سکتے ہیں جو ایک سے زیادہ دوسرے انٹرفیس میں توسیع کرتا ہے۔

انٹرفیس حتمی خلاصہ کلاس ہے۔ خلاصہ کلاس انٹرفیس اور کنکریٹ کلاس کے مابین ایک ہائبرڈ ہے۔

ایک تجریدی کلاس ٹھوس طریقوں پر مشتمل ہوسکتی ہے ، اور اس طرح متعدد وراثت میں کنکریٹ طریقوں کی مبہم اوور رائیڈز پیدا ہوسکتی ہیں جو خلاصہ طریقوں کو اوور رائڈز کے ل case معاملہ نہیں ہے کیونکہ خلاصہ طریقوں میں ایمپٹی ہوتی ہے ، اگر اس سے کوئی معنی پیدا ہوتا ہے ، اور اس طرح جاوا انٹرفیس کے لئے صرف متعدد وراثت کی اجازت دیتا ہے۔

اگر آپ جاوا کلیکشن کے تقویت کو دیکھیں تو آپ دیکھیں گے کہ انٹرفیس بائنری جیسے بطور گراف کے درخت کی طرح گراف کو کس طرح متحرک کرتے ہیں جیسا کہ انٹرفیس استعمال نہیں ہوتا تھا۔


جواب 3:

میرا اندازہ ہے کہ میں کہوں گا کہ انٹرفیس متعدد وراثت کی حمایت کرتا ہے اور تجریدی طبقے میں ایسا نہیں ہوتا ہے۔ دوسرا فرق یہ ہے کہ انٹرفیس کے تمام طریقوں کو خلاصہ ہونا چاہئے۔

انٹرفیس در حقیقت خود خلاصہ کلاس سے کہیں زیادہ خلاصہ ہے۔ اگر آپ کو ضرورت ہو تو ، آپ یہاں تک کہ ایک انٹرفیس بھی تشکیل دے سکتے ہیں جو ایک سے زیادہ دوسرے انٹرفیس میں توسیع کرتا ہے۔

انٹرفیس حتمی خلاصہ کلاس ہے۔ خلاصہ کلاس انٹرفیس اور کنکریٹ کلاس کے مابین ایک ہائبرڈ ہے۔

ایک تجریدی کلاس ٹھوس طریقوں پر مشتمل ہوسکتی ہے ، اور اس طرح متعدد وراثت میں کنکریٹ طریقوں کی مبہم اوور رائیڈز پیدا ہوسکتی ہیں جو خلاصہ طریقوں کو اوور رائڈز کے ل case معاملہ نہیں ہے کیونکہ خلاصہ طریقوں میں ایمپٹی ہوتی ہے ، اگر اس سے کوئی معنی پیدا ہوتا ہے ، اور اس طرح جاوا انٹرفیس کے لئے صرف متعدد وراثت کی اجازت دیتا ہے۔

اگر آپ جاوا کلیکشن کے تقویت کو دیکھیں تو آپ دیکھیں گے کہ انٹرفیس بائنری جیسے بطور گراف کے درخت کی طرح گراف کو کس طرح متحرک کرتے ہیں جیسا کہ انٹرفیس استعمال نہیں ہوتا تھا۔


جواب 4:

میرا اندازہ ہے کہ میں کہوں گا کہ انٹرفیس متعدد وراثت کی حمایت کرتا ہے اور تجریدی طبقے میں ایسا نہیں ہوتا ہے۔ دوسرا فرق یہ ہے کہ انٹرفیس کے تمام طریقوں کو خلاصہ ہونا چاہئے۔

انٹرفیس در حقیقت خود خلاصہ کلاس سے کہیں زیادہ خلاصہ ہے۔ اگر آپ کو ضرورت ہو تو ، آپ یہاں تک کہ ایک انٹرفیس بھی تشکیل دے سکتے ہیں جو ایک سے زیادہ دوسرے انٹرفیس میں توسیع کرتا ہے۔

انٹرفیس حتمی خلاصہ کلاس ہے۔ خلاصہ کلاس انٹرفیس اور کنکریٹ کلاس کے مابین ایک ہائبرڈ ہے۔

ایک تجریدی کلاس ٹھوس طریقوں پر مشتمل ہوسکتی ہے ، اور اس طرح متعدد وراثت میں کنکریٹ طریقوں کی مبہم اوور رائیڈز پیدا ہوسکتی ہیں جو خلاصہ طریقوں کو اوور رائڈز کے ل case معاملہ نہیں ہے کیونکہ خلاصہ طریقوں میں ایمپٹی ہوتی ہے ، اگر اس سے کوئی معنی پیدا ہوتا ہے ، اور اس طرح جاوا انٹرفیس کے لئے صرف متعدد وراثت کی اجازت دیتا ہے۔

اگر آپ جاوا کلیکشن کے تقویت کو دیکھیں تو آپ دیکھیں گے کہ انٹرفیس بائنری جیسے بطور گراف کے درخت کی طرح گراف کو کس طرح متحرک کرتے ہیں جیسا کہ انٹرفیس استعمال نہیں ہوتا تھا۔