جاوا اور سی # میں انٹرفیس اور تجریدی کلاس کے مابین فرق

مصنف: Laura McKinney
تخلیق کی تاریخ: 1 اپریل 2021
تازہ کاری کی تاریخ: 10 مئی 2024
Anonim
خلاصہ کلاسز بمقابلہ انٹرفیس (جاوا)
ویڈیو: خلاصہ کلاسز بمقابلہ انٹرفیس (جاوا)

مواد


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

  1. موازنہ چارٹ
  2. تعریف
  3. کلیدی اختلافات
  4. نتیجہ اخذ کرنا

موازنہ چارٹ

موازنہ کی بنیادانٹرفیسخلاصہ کلاس
بنیادیجب آپ کو صرف اس کے نفاذ کے بارے میں نہیں بلکہ ضروریات کا علم ہوتا ہے تو ، آپ "انٹرفیس" استعمال کرتے ہیں۔جب آپ اس نفاذ کے بارے میں جزوی طور پر جانتے ہو تو آپ "خلاصہ کلاس" استعمال کرتے ہیں۔
طریقےانٹرفیس میں صرف خلاصہ طریقے ہوتے ہیں۔خلاصہ کلاس میں تجریدی طریقوں کے ساتھ ساتھ ٹھوس طریقے بھی شامل ہیں۔
طریقوں میں ترمیم کرنے والے تک رسائی حاصل کریںانٹرفیس کے طریقے ہمیشہ "عوامی" اور "تجریدی" ہوتے ہیں ، چاہے ہم اس کا اعلان ہی نہ کریں۔ لہذا ، یہ 100، ، خالص خلاصہ طبقے کے طور پر کہا جاسکتا ہے۔یہ لازمی نہیں ہے کہ خلاصہ کلاس میں طریقہ عوامی اور خلاصہ ہو۔ اس کے ٹھوس طریقے بھی ہوسکتے ہیں۔
طریقوں کے لئے پابندی والا ترمیم کنندہایک انٹرفیس کے طریقہ کار کو مندرجہ ذیل ترمیم کاروں کے ساتھ اعلان نہیں کیا جاسکتا:
عوامی: نجی اور محفوظ
خلاصہ: حتمی ، جامد ، ہم آہنگی ، آبائی ، اسٹرکف پی۔
خلاصہ کلاس متغیر میں ترمیم کرنے والوں پر کوئی پابندی نہیں ہے۔
متغیرات کی رسائی میں ترمیم کریںانٹرفیس متغیرات کے ل allowed اجازت دی گئی Ace Modifier عوامی ، جامد اور حتمی ہے چاہے ہم اعلان کررہے ہو یا نہیں۔خلاصہ کلاس میں متغیرات کو عوامی ، جامد ، حتمی ہونے کی ضرورت نہیں ہے۔
متغیرات کے لric محدود پابندیوںانٹرفیس متغیرات کو نجی ، محفوظ ، عارضی ، اتار چڑھاؤ کا اعلان نہیں کیا جاسکتا۔خلاصہ کلاس متغیرات میں ترمیم کرنے والوں پر کوئی پابندی نہیں ہے۔
متغیر کی ابتداانٹرفیس متغیرات کو اس کے اعلان کے وقت شروع کرنا ضروری ہے۔یہ لازمی نہیں ہے کہ خلاصہ کلاس متغیرات کو اس کے اعلان کے وقت شروع کرنا ضروری ہے۔
مثال اور جامد بلاکسانٹرفیس کے اندر ، آپ مثال یا جامد بلاک کا اعلان نہیں کرسکتے ہیں۔خلاصہ کلاس اس کے اندر ایک مثال یا جامد بلاک کی اجازت دیتی ہے۔
تعمیر کارآپ انٹرفیس کے اندر کنسٹرکٹر کا اعلان نہیں کرسکتے ہیں۔آپ ایک تجریدی کلاس کے اندر کنسٹرکٹر کا اعلان کرسکتے ہیں۔


انٹرفیس کی تعریف

جاوا متعدد وراثت کی اجازت نہیں دیتا ہے۔ یعنی ، ایک طبقہ ایک وقت میں ایک سے زیادہ طبقے کا وارث نہیں ہوسکتا ہے۔ اس کے پیچھے کی وجہ ایک مثال کے ساتھ بیان کی جاسکتی ہے۔ فرض کریں کہ ہمارے پاس دو پیرنٹس کلاس ہیں ، A اور B اور ایک مشتق کلاس سی۔ اخذ کردہ کلاس C کو A اور B دونوں کلاسوں کا وراثت حاصل ہے۔اب ، دونوں کے پاس کلاس A اور B کا طریقہ سیٹ () ہے ، پھر یہ کلاس C کے لئے ایک سوال ہوگا کہ اسے کس طبقے کا سیٹ () طریقہ اختیار کرنا چاہئے۔ اس مسئلے کا حل "انٹرفیس" ہے۔

انٹرفیس ایک خالص خلاصہ کلاس ہے۔ انٹرفیس بنانے کے لئے استعمال ہونے والا کلیدی لفظ "انٹرفیس" ہے۔ چونکہ انٹرفیس کے اندر موجود تمام طریقے مکمل طور پر تجرید ہیں۔ انٹرفیس صرف یہ واضح کرتا ہے کہ کلاس کو کیا کرنا چاہئے لیکن ، یہ اس کی وضاحت نہیں کرتا ہے کہ یہ کس طرح کرتا ہے۔ صرف اس وجہ سے کہ انٹرفیس کے اندر اعلان کردہ تمام طریقہ خلاصہ ہیں ، لہذا کوئی انٹرفیس کے لئے مثال نہیں بنائی جاتی ہے۔ جاوا میں "انٹرفیس" کی عمومی شکل یہ ہے:


access_specifier انٹرفیس انٹرفیس_ نام {واپسی کی قسم کا طریقہ-نام 1 (پیرامیٹر کی فہرست)؛ واپسی کی قسم کا طریقہ-نام 2 (پیرامیٹر کی فہرست)؛ ٹائپ کریں فائنل-ور نام 1 = قدر؛ ٹائپ کریں فائنل-ورنیام 2 = قدر؛ // ... واپسی کی قسم کا طریقہ-نام این (پیرامیٹر کی فہرست)؛ ٹائپ فائنل-ورنم = قیمت؛ }

رسائی کو واضح کرنے والا عوامی اعلان کیا جاتا ہے کیونکہ کلاسوں کو انٹرفیس کو نافذ کرنے کی ضرورت ہوتی ہے۔

ہمارے پاس C ++ میں "انٹرفیس" کا تصور نہیں ہے۔ لیکن ، جاوا اور سی # انٹرفیس کی بہت اچھی طرح سے وضاحت کرتے ہیں۔

جاوا میں انٹرفیس:

  • انٹرفیس کے متغیرات ہمیشہ عوامی ، جامد اور آخری ہوتے ہیں۔
  • متغیرات کو اس کے اعلان کے وقت شروع کرنا ضروری ہے۔
  • متغیرات کو کبھی بھی نجی ، محفوظ ، عارضی اور اتار چڑھاؤ کا اعلان نہیں کیا جاسکتا۔
  • انٹرفیس کے طریقے ہمیشہ عوامی اور تجرید کے ہوتے ہیں جبکہ ان کو کبھی بھی نجی ، محفوظ ، حتمی ، جامد ، ہم آہنگی ، آبائی اور اسٹرک اسٹپ کے طور پر اعلان نہیں کیا جاسکتا ہے۔
  • آپ انٹرفیس کے اندر کسی بھی کنسٹرکٹر کا اعلان نہیں کرسکتے ہیں کیونکہ تعمیر کنندہ کا بنیادی مقصد کلاس متغیرات کا آغاز ہوتا ہے لیکن ، انٹرفیس میں متغیرات اس کے اعلان کے وقت شروع کردیئے جاتے ہیں۔
  • انٹرفیس دوسرے انٹرفیس کا وارث ہوسکتا ہے لیکن ، اس طرح کے انٹرفیس کو نافذ کرنے والی کلاس کو وراثت میں پائے جانے والے تمام انٹرفیس کے طریقوں کو لاگو کرنا ہوگا۔
  • ایک طبقہ ایک وقت میں ایک سے زیادہ انٹرفیس کا وارث ہوسکتا ہے ، اور اسے وراثت میں پائے جانے والے تمام انٹرفیس کے تمام طریقوں کو نافذ کرنا ہوگا۔

جاوا میں انٹرفیس کے نفاذ کی عمومی شکل:

کلاس کلاس_ نام انٹرفیس_ نام {// کلاس باڈی imple نافذ کرتا ہے

انٹرفیس کو وراثت میں لانے کے لئے ، ایک کلاس ایک کلیدی لفظ "آلات" استعمال کرتا ہے ، اور کلاس ورثے میں انٹرفیس کے ذریعہ اعلان کردہ تمام طریقہ کو نافذ کرتا ہے۔

C # میں انٹرفیس:

C # میں انٹرفیس جاوا میں انٹرفیس کے لگ بھگ مماثل ہے سوائے اس کے کہ:

  • C # میں انٹرفیس متغیرات کا اعلان نہیں کرتا ہے۔
  • انٹرفیس کا نام دارالحکومت I کے ساتھ پہلے سے لگا ہوا ہے اور اسے بڑی نوآباد (:) نشان کے ساتھ ملا ہے۔

سی # میں انٹرفیس کو نافذ کرنے کی عمومی شکل:

کلاس کلاس_ نام: انٹرفیس_ نام {// کلاس باڈی}

خلاصہ کلاس کی تعریف

ایک کلاس جس میں ایک یا زیادہ تجریدی طریقوں پر مشتمل ہوتا ہے اسے خلاصہ کلاس کہا جاتا ہے ، اور کلاس اعلان کے آغاز میں "کلاس" کی ورڈ سے پہلے "خلاصہ" کی ورڈ کا استعمال کرتے ہوئے ایک طبقے کو خلاصہ قرار دیا جاتا ہے۔ چونکہ خلاصہ کلاس میں تجریدی طریقہ کار ہوتا ہے یہ نامکمل قسم کا ہوتا ہے۔ لہذا ، آپ تجریدی طبقے کی اشیاء نہیں بنا سکتے ہیں۔ جب بھی کسی طبقے کو کسی خلاصہ کلاس کا وارث ملتا ہے ، اسے خلاصہ طبقے کے تمام تجریدی طریقوں کو لاگو کرنا ضروری ہے اگر وہ ایسا نہیں کرتا ہے تو پھر اسے خلاصہ بھی قرار دینا ضروری ہے۔ خلاصہ وصولی اس وقت تک وراثت میں مل جاتی ہے جب تک کہ خلاصہ طریقوں پر مکمل عمل درآمد نہیں ہوجاتا۔

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

خلاصہ کلاس کلاس_ نام {خلاصہ طریقہ_ نام1 ()؛ تجرید کا طریقہ_ نام 2 ()؛ : return_type method_name3 (parameter_list) concrete // کنکریٹ کا طریقہ} return_type method_name4 (پیرامیٹر_ فہرست) {// ٹھوس طریقہ}}؛

جاوا اور C # دونوں میں ایک تجرید کلاس کا تصور ایک جیسے ہے۔ ایک تجریدی کلاس C ++ میں قدرے مختلف ہے۔

سی ++ میں اگر کلاس میں کم از کم ایک ورچوئل فنکشن ہوتا ہے تو کلاس ایک تجریدی کلاس بن جاتی ہے۔ کلیدی لفظ "تجرید" کے بجائے ، کلیدی لفظ "ورچوئل" ایک تجریدی طریقہ کار کے اعلان کے لئے استعمال ہوتا ہے۔

  1. جب آپ کو "جس چیز کی ضرورت ہوتی ہے" لیکن "اس کو کیسے نافذ کیا جائے گا" کے بارے میں معلومات نہیں ہوں گی تو پھر انٹرفیس کو ضرور استعمال کرنا چاہئے۔ دوسری طرف ، اگر آپ جانتے ہیں کہ کس چیز کی ضرورت ہے اور جزوی طور پر جانتے ہیں کہ اس کا نفاذ کیسے ہوگا تو پھر خلاصہ کلاس استعمال کریں۔
  2. انٹرفیس میں اس کے تمام طریقے تجرید ہوتے ہیں لیکن ، ایک تجریدی کلاس میں کچھ تجریدی طریقے اور کچھ ٹھوس طریقے ہوتے ہیں۔
  3. انٹرفیس کے اندر موجود طریقے عوامی اور تجرید ہیں لہذا ، اسے خالص خلاصہ طبقے کے طور پر بھی کہا جاتا ہے۔ دوسری طرف ، خلاصہ کے اندر موجود طریقے صرف عوامی اور تجرید تک ہی محدود نہیں ہیں۔
  4. انٹرفیس کا طریقہ کبھی بھی نجی ، محفوظ ، حتمی ، جامد ، ہم وقت ساز ، آبائی یا اسٹرک اسٹپ نہیں ہوسکتا ہے۔ دوسری طرف ، تجریدی طبقے کے طریقوں پر کوئی پابندی نہیں ہے۔
  5. ایک انٹرفیس میں متغیرات عوامی اور حتمی ہوتے ہیں خواہ ہم ان کا اعلان کریں یا نہ کریں جبکہ ، خلاصہ طبقے کے متغیرات کو صرف عوامی اور حتمی شکل دینے کی کوئی پابندی نہیں ہے۔
  6. انٹرفیس میں متغیرات کبھی بھی نجی محفوظ عارضی یا اتار چڑھاؤ نہیں ہوسکتے ہیں جبکہ ، خلاصہ کلاس میں متغیرات پرکوئی پابندی نہیں ہے۔
  7. اعلان کے دوران انٹرفیس کے متغیر کی ابتدا کی جانی چاہئے۔ دوسری طرف ، خلاصہ کلاس میں متغیرات کو کسی بھی وقت شروع کیا جاسکتا ہے۔
  8. انٹرفیس کے اندر ، ایک مثال یا جامد بلاک کا اعلان نہیں کیا جاسکتا لیکن ، آپ خلاصہ کلاس کے اندر مثال یا جامد بلاک کا اعلان کرسکتے ہیں۔
  9. آپ انٹرفیس کے اندر کنسٹرکٹر کی وضاحت نہیں کرسکتے ہیں جبکہ ، آپ ایک تجریدی کلاس کے اندر کنسٹرکٹر کی وضاحت کرسکتے ہیں۔

نتیجہ:

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