JavaRush /جاوا بلاگ /Random-UR /انٹرفیس وراثت کیوں ضروری ہے؟

انٹرفیس وراثت کیوں ضروری ہے؟

گروپ میں شائع ہوا۔
انٹرفیس کی ضرورت کیوں ہے؟ انٹرفیس وراثت کیوں ضروری ہے؟ پولیمورفزم کی ضرورت کیوں ہے؟ ان لوگوں کے لیے جنہوں نے پڑھا اور سمجھا کہ انٹرفیس وراثت کیسے کریں، لیکن کیوں نہیں سمجھتے۔ پچھلی بار، عام ایوانوف فیملی کی مثال استعمال کرتے ہوئے، ہم نے دیکھا کہ انٹرفیس کی ضرورت کیوں ہے۔ ہم پریشان کن خاندان کو ڈیجیٹائز کرنا جاری رکھے ہوئے ہیں۔ ہر انسان کی کچھ عادتیں ہوتی ہیں جو اسے کسی سے وراثت میں نہیں ملی اور نہ ہی کسی کو منتقل ہوئی یعنی اس کی ذاتی عادات۔ ہمارا کام خاندان کے ہر فرد کو منفرد عادات فراہم کرنا ہے۔ آئیے جاوا طیارے کی طرف چلتے ہیں: ہمیں کلاسوں میں انوکھے طریقے نافذ کرنے کی ضرورت ہے جو صرف ان کلاسوں سے تعلق رکھتے ہیں۔ ٹھیک ہے، آگے بڑھو! یہ پیٹیا ہے:
class Петя implements ПривычкиПапы, ПривычкиМамы {

//это личные Петины привычки
public void ковырятьВНосу () {
System.out.println("Ковырь-ковырь");
    }

//это унаследованные привычки
@Override
public void прихлюпывать() {
     System.out.println("Хлюп");
   }

@Override
public void поджимать () {
System.out.println("Поджать губки");
    }
}
یہ ابا ہے:
class Папа implements ПривычкиПапы {

//это личные Папины привычки
public void чесатьБороду () {
System.out.println("Чешу бороду");
    }

//это переданные привычки
   @Override
    public void прихлюпывать() {
     System.out.println("Хлюп");
   }
}
یہ ماں ہے:
class Мама implements ПривычкиМамы{

//это личные Мамины привычки
public void хлопатьРесницами () {
System.out.println("Хлоп-хлоп");
    }

//это переданные привычки
@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
کامل! سب کچھ کام کرتا ہے جیسا کہ اسے چاہئے! پہلے مضمون میں کہا گیا تھا کہ یہ پروگرام حقیقی دنیا کا عکس ہے۔ حقیقت کی سب سے دلچسپ خاصیت یہ ہے کہ یہ ہر وقت بدلتی رہتی ہے۔ ایوانوف خاندان بھی اس سے مستثنیٰ نہیں تھا؛ ان کی ایک پیاری بیٹی تھی جس کا نام ماشا تھا۔ اور اسے ماں سے پلکیں مارنے اور پاپا سے سونگھنے کی عادت وراثت میں ملی۔ ہمیں اپنے پروگرام میں تبدیلیاں کرنے کی ضرورت ہے۔ انٹرفیس وراثت کیوں ضروری ہے؟  - 1چلو، یہ اتنا مشکل نہیں ہے، اصل چیز منطقی طور پر سوچنا ہے. سب کے بعد، ہر کوئی جانتا ہے کہ انٹرفیس کی ضرورت کیوں ہے. آئیے اب ایک انٹرفیس Masha's Habits بنائیں، وہاں clapElashes() اور squish() طریقہ کی وضاحت کریں ، اسے Masha پر لاگو کریں اور ہم ہو گئے۔ تو کیا ہوگا اگر اسی نام کے طریقے پہلے ہی دوسرے انٹرفیس میں لاگو کیے گئے ہیں، تو آپ اسے ایک بار کر سکتے ہیں۔ انٹرفیس وراثت کیوں ضروری ہے؟  - 2درحقیقت، کون جانتا ہے کہ ایوانوف کے خاندان کے کیا منصوبے ہیں، اگر سریوزا پیدا ہوتا ہے، جو والد، ماں، پردادا اور چوتھی نسل کے کسی اور سے عادات کا وارث بنے گا ، ہر بار ایک انٹرفیس بناتا ہے، جیسے: انٹرفیس سیریوزہ کی عادات ، اور وہاں ایسے طریقوں کا اعلان کریں جن کا پہلے ہی دوسرے انٹرفیس میں سینکڑوں بار اعلان کیا جا سکتا ہے؟ ایک دو یا تین نسلوں میں ہم ایک جیسے طریقوں کے ایک گروپ کے ساتھ انٹرفیس حاصل کرنے کا خطرہ مول لیتے ہیں جو پہلے ہی دوسرے انٹرفیس میں بیان کیے گئے ہیں، اور اگر ہمیں کسی عادت کا نام تبدیل کرنے کی ضرورت ہے (اور یہ بالکل ممکن ہے - آخر کار، دنیا بدل رہی ہے) پھر اس سپتیٹی کو کیسے نکالا جائے، میں سوچ بھی نہیں سکتا۔ باقی رہ گیا ہے بیٹھ کر معجزے کا خواب۔ انٹرفیس وراثت کیوں ضروری ہے؟  - 3اب، اگر ہر عادت کا اپنا انٹرفیس ہوتا۔ آئیے تصور کریں:
public interface ПривычкаПрихлюпывать {
    public void прихлюпывать();
}
public interface ПривычкаПоджимать {
    public void поджимать();
}
public interface ПривычкаКовырятьВНосу {
    public void ковырятьВНосу();
}
public interface ПривычкаХлопатьРесницами {
    public void хлопатьРесницами();
}
public interface ПривычкаЧесатьБороду {
    public void чесатьБороду();
}
اور پھر، لیگو کی طرح، ہم انفرادی عادات سے متعدد وراثت کا استعمال کرتے ہوئے، خاندان کے ایک فرد کی عادات کے لیے مطلوبہ انٹرفیس ٹائپ کر سکتے ہیں۔ کچھ اس طرح:
public interface ПривычкиМамы extends ПривычкаПоджимать, ПривычкаХлопатьРесницами {
    }
public interface ПривычкиПапы extends ПривычкаЧесатьБороду, ПривычкаХлюпать {
    }
public interface ПривычкиПети extends ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу {
    }
public interface ПривычкиМаши extends ПривычкаХлюпать, ПривычкаХлопатьРесницами {
    }
اور پھر مطلوبہ انٹرفیس کو مطلوبہ کلاس میں لاگو کریں، مثال کے طور پر ماں:
class Мама implements ПривычкиМамы{
@Override
public void хлопатьРесницами () {
System.out.println("Хлоп-хлоп");
    }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
پاپا، پیٹیا اور ماشا کے ساتھ بھی ایسا ہی کیا جا سکتا ہے ۔ اور پھر، ایوانوف کے خاندان کی توسیع کے ساتھ، عادات کے ساتھ کوئی مسئلہ نہیں ہوگا، ہم انہیں صرف انٹرفیس کی سطح پر وراثت کے ذریعے، سلاد میں اجزاء کی طرح تبدیل کریں گے، اور اسی نام کے طریقوں کا ایک گروپ تیار نہیں کریں گے۔ آہ، خواب، خواب... انٹرفیس وراثت کیوں ضروری ہے؟  - 4جو آدمی تیار کیا گیا ہے وہ صحیح ہے، یہ حقیقت میں ممکن ہے - اب ایوانوف کے خاندان کی نقالی محفوظ ہو گئی ہے! ایک دھیان سے پڑھنے والا یہ سوال پوچھ سکتا ہے: "خاندان کے ہر فرد کے لیے انٹرفیس کیوں بنائیں؟ ہمارے پاس اعمال کا ایک سیٹ ہے - انہیں فوری طور پر مطلوبہ کلاس کے لیے نافذ کریں۔" آئیے تصور کریں کہ متعدد متوازی دنیاوں میں پیٹیا کے ڈبلز ہیں ، اور تمام پیٹیا کو پیٹیا کی عادات کے انٹرفیس کو نافذ کرنے کی ضرورت ہے
interface ПривычкиПети extends ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу

class ПетяВселеннаяХ implements ПривычкиПети
class ПетяВселеннаяY implements ПривычкиПети
// и т.д.
اگر کوئی عام انٹرفیس نہ ہوتا تو کیا ہوتا؟
class ПетяВселеннаяХ implements ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу
class ПетяВселеннаяY implements ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу
// и т.д.
اس کے نتیجے میں زیادہ بار بار کوڈ ہوتا ہے۔ انٹرفیس وراثت ایپلی کیشن کو تبدیل کرنے کے لیے زیادہ لچکدار بناتا ہے، خاص طور پر، دہرانے کے طریقوں سے مسائل حل کیے جا سکتے ہیں۔ براہ کرم دوبارہ نوٹ کریں کہ انٹرفیس کی متعدد وراثت کی اجازت ہے۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION