JavaRush /جاوا بلاگ /Random-SD /انٽرفيس وراثت ڇو ضروري آهي؟

انٽرفيس وراثت ڇو ضروري آهي؟

گروپ ۾ شايع ٿيل
ڇو انٽرفيس جي ضرورت آهي؟ انٽرفيس وراثت ڇو ضروري آهي؟ پوليمورفيزم جي ضرورت ڇو آهي؟ انھن لاءِ جن پڙھيو ۽ سمجھيو ته انٽرفيس وراثت ڪيئن ڪجي، پر سمجھ ۾ نه آيو ڇو. آخري دفعو، عام Ivanov خاندان جو مثال استعمال ڪندي، اسان ڏٺو ته ڇو انٽرنيٽ جي ضرورت آهي. اسان پريشان خاندان کي ڊجيٽل ڪرڻ جاري رکون ٿا. هر ماڻهوءَ ۾ ڪي عادتون هونديون آهن، جيڪي هن کي ڪنهن کان ورثي ۾ نه ملنديون آهن ۽ نه وري ڪنهن کي منتقل ٿينديون آهن- سندس ذاتي عادتون. اسان جو ڪم هر خاندان جي ميمبر کي منفرد عادتن سان مهيا ڪرڻ آهي. اچو ته جاوا جهاز ڏانهن وڃو: اسان کي ڪلاسن ۾ منفرد طريقا لاڳو ڪرڻ گهرجن جيڪي صرف انهن طبقن سان تعلق رکندا. چڱو، اڳتي وڌو! هي پيٽيا آهي:
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("Поджать губки");
    }
}
ڪامل! هر شي ڪم ڪري ٿي جيئن ان کي گهرجي! پهرين مضمون ۾ چيو ويو هو ته پروگرام حقيقي دنيا جو عڪس آهي. حقيقت جي سڀ کان دلچسپ ملڪيت اها آهي ته اها هر وقت تبديل ٿي وڃي ٿي. Ivanov خاندان ڪو به استثنا نه هو؛ انهن کي ماشا نالي هڪ مٺي ڌيء هئي. ۽ هن کي وراثت ۾ وراثت ۾ هن جي محرمن کي بيهڻ جي عادت ماء کان ملي هئي ۽ پيء کان. اسان کي پنهنجي پروگرام ۾ تبديليون آڻڻ گهرجن. انٽرفيس وراثت ڇو ضروري آهي؟  - 1اچو ته اهو ڏکيو ناهي، بنيادي شيء منطقي طور تي سوچڻ آهي. آخرڪار، هرڪو ڄاڻي ٿو ڇو انٽرنيٽ جي ضرورت آهي. ھاڻي اچو ته ھڪ انٽرفيس ٺاھيون Masha's Habits ، بيان ڪريون ClapElashes() ۽ squish() طريقو اتي، ان کي ماشا تي لاڳو ڪريو ۽ اسان ٿي ويا. پوء ڇا ڪجي جيڪڏهن ساڳي نالي سان طريقا اڳ ۾ ئي ٻين انٽرفيس ۾ لاڳو ڪيا ويا آهن، توهان هڪ ڀيرو ڪري سگهو ٿا. انٽرفيس وراثت ڇو ضروري آهي؟  - 2درحقيقت، ڪير ڄاڻي ٿو ته ايوانوف خاندان جو ڪهڙو منصوبو آهي، جيڪڏهن سريوزا پيدا ٿئي ٿي، جيڪو پيء، ماء، ڏاڏو ۽ چوٿين نسل مان ڪنهن ٻئي جي عادتن کي ورثي ۾ ڏيندو ، هر ڀيري هڪ انٽرفيس ٺاهيندي، جهڙوڪ: انٽرفيس سريوزا جون عادتون ، ۽ اتي. طريقن جو اعلان ڪريو جيڪي اڳ ۾ ئي ٻين انٽرفيس ۾ سوين ڀيرا اعلان ڪري سگھجن ٿا؟ هڪ ٻن يا ٽن نسلن ۾ اسان انٽرفيس حاصل ڪرڻ جو خطرو رکون ٿا هڪجهڙائي واري طريقن جي هڪ گروپ سان جيڪي اڳ ۾ ئي ٻين انٽرفيس ۾ بيان ڪيا ويا آهن، ۽ جيڪڏهن اسان کي ڪنهن عادت جو نالو تبديل ڪرڻ جي ضرورت آهي (۽ اهو بلڪل ممڪن آهي - آخرڪار، دنيا تبديل ٿي رهي آهي) , پوء ڪيئن هن spaghetti کي معلوم ڪرڻ لاء, مون کي تصور نه ٿا ڪري سگهو. باقي رهي ٿو ويهڻ ۽ هڪ معجزي جو خواب. انٽرفيس وراثت ڇو ضروري آهي؟  - 3هاڻي، جيڪڏهن هر عادت پنهنجي انٽرفيس هئي. اچو ته تصور ڪريون:
public interface ПривычкаПрихлюпывать {
    public void прихлюпывать();
}
public interface ПривычкаПоджимать {
    public void поджимать();
}
public interface ПривычкаКовырятьВНосу {
    public void ковырятьВНосу();
}
public interface ПривычкаХлопатьРесницами {
    public void хлопатьРесницами();
}
public interface ПривычкаЧесатьБороду {
    public void чесатьБороду();
}
۽ پوءِ، جيئن Lego ۾، اسان ڪري سگھون ٿا، انفرادي عادتن مان گھڻا ورثو استعمال ڪندي، انٽرفيس ٽائيپ ڪريون ٿا جيڪو اسان کي خاندان جي فرد جي عادتن لاءِ گھربل آھي. ڪجهه هن طرح:
public interface ПривычкиМамы extends ПривычкаПоджимать, ПривычкаХлопатьРесницами {
    }
public interface ПривычкиПапы extends ПривычкаЧесатьБороду, ПривычкаХлюпать {
    }
public interface ПривычкиПети extends ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу {
    }
public interface ПривычкиМаши extends ПривычкаХлюпать, ПривычкаХлопатьРесницами {
    }
۽ پوءِ صرف مطلوبه انٽرفيس کي مطلوب طبقي ۾ لاڳو ڪريو، مثال طور، Mom:
class Мама implements ПривычкиМамы{
@Override
public void хлопатьРесницами () {
System.out.println("Хлоп-хлоп");
    }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
ائين ئي پاپا، پيٽيا ۽ ماشا سان به ٿي سگهي ٿو . ۽ پوء، Ivanov خاندان جي توسيع سان، عادتن سان ڪو به مسئلو نه ٿيندو، اسان ان کي صرف انٽرفيس جي سطح تي ورثي جي ذريعي تبديل ڪنداسين، جهڙوڪ سلاد ۾ اجزاء، ۽ ساڳئي نالي سان طريقن جو هڪ گروپ پيدا نه ڪنداسين. ها، خواب، خواب... انٽرفيس وراثت ڇو ضروري آهي؟  - 4انسان جو ٺهيل صحيح آهي، اهو اصل ۾ ممڪن آهي - هاڻي ايوانوف خاندان جي تخليق کي بچايو ويو آهي! هڪ ذهين پڙهندڙ اهو سوال پڇي سگهي ٿو: "ڇو ٺاهيو انٽرفيس هر خاندان جي ميمبر لاءِ؟ اسان وٽ عملن جو هڪ سيٽ آهي - انهن کي فوري طور تي گهربل طبقي لاءِ لاڳو ڪريو." اچو ته تصور ڪريون ته ڪيترن ئي متوازي دنيان ۾ پيٽيا جا ڊبل آهن ، ۽ سڀني پيٽياس کي انٽرفيس تي عمل ڪرڻ جي ضرورت آهي Petya's Habits
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