JavaRush /Java Blog /Random-TL /Bakit kailangan ang inheritance ng interface?

Bakit kailangan ang inheritance ng interface?

Nai-publish sa grupo
Bakit kailangan ang mga interface? Bakit kailangan ang inheritance ng interface? Bakit kailangan ang polymorphism? Para sa mga nagbabasa at naiintindihan kung paano gawin ang interface inheritance, ngunit hindi naiintindihan kung bakit. Noong nakaraang pagkakataon, gamit ang halimbawa ng ordinaryong pamilyang Ivanov, tiningnan namin kung bakit kailangan ang mga interface. Patuloy nating i-digitize ang magulong pamilya. Ang bawat tao ay may ilang mga gawi na hindi niya minana kanino man o hindi naipasa kanino man - ang kanyang mga personal na gawi. Ang aming gawain ay bigyan ang bawat miyembro ng pamilya ng mga natatanging gawi. Lumipat tayo sa Java plane: kailangan nating magpatupad ng mga natatanging pamamaraan sa mga klase na mapapabilang lamang sa mga klaseng ito. sige, sige! Ito si Petya:
class Петя implements ПривычкиПапы, ПривычкиМамы {

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

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

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

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

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

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

//это переданные привычки
@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
Perpekto! Lahat ay gumagana ayon sa nararapat! Sa unang artikulo, sinabi na ang programa ay salamin ng totoong mundo. Ang pinaka-kagiliw-giliw na pag-aari ng katotohanan ay nagbabago ito sa lahat ng oras. Ang pamilya Ivanov ay walang pagbubukod; mayroon silang isang matamis na anak na babae na pinangalanang Masha. At minana niya ang ugali ng pagpalo ng pilikmata kay Nanay at pagsinghot kay Tatay. Kailangan nating gumawa ng mga pagbabago sa ating programa. Bakit kailangan ang inheritance ng interface?  - 1Halika, hindi ito mahirap, ang pangunahing bagay ay mag-isip nang lohikal. Pagkatapos ng lahat, alam ng lahat kung bakit kailangan ang mga interface. Ngayon gumawa tayo ng interface para sa Masha's Habits , ilarawan ang clapElashes() at squish() na paraan doon , ipatupad ito sa Masha at tapos na tayo. Paano kung ang mga pamamaraan na may parehong pangalan ay ipinatupad na sa iba pang mga interface, magagawa mo ito nang isang beses. Bakit kailangan ang inheritance ng interface?  - 2Sa katunayan, sino ang nakakaalam kung ano ang mga plano ng pamilya Ivanov, kung ipinanganak si Seryozha , na magmamana ng mga gawi mula kay Tatay, Nanay, Lolo at ibang tao mula sa ika-apat na henerasyon, sa bawat oras na lumilikha ng isang interface, tulad ng: interface Seryozha's Habits , at doon ipahayag ang mga pamamaraan na maaari nang ipahayag nang daan-daang beses sa iba pang mga interface? Sa isang pares o tatlong henerasyon ay nanganganib tayong makakuha ng mga interface na may isang bungkos ng magkatulad na mga pamamaraan na inilarawan na sa iba pang mga interface, at kung kailangan nating baguhin ang pangalan ng ilang ugali (at ito ay lubos na posible - pagkatapos ng lahat, ang mundo ay nagbabago) , saka kung paano malaman ang spaghetti na ito, hindi ko maisip. Ang natitira na lang ay umupo at mangarap ng isang himala. Bakit kailangan ang inheritance ng interface?  - 3Ngayon, kung ang bawat ugali ay may sariling interface. Isipin natin:
public interface ПривычкаПрихлюпывать {
    public void прихлюпывать();
}
public interface ПривычкаПоджимать {
    public void поджимать();
}
public interface ПривычкаКовырятьВНосу {
    public void ковырятьВНосу();
}
public interface ПривычкаХлопатьРесницами {
    public void хлопатьРесницами();
}
public interface ПривычкаЧесатьБороду {
    public void чесатьБороду();
}
At pagkatapos, tulad ng sa Lego, maaari naming, gamit ang maramihang pamana mula sa mga indibidwal na gawi, i-type ang interface na kailangan namin para sa mga gawi ng isang indibidwal na miyembro ng pamilya. Isang bagay na tulad nito:
public interface ПривычкиМамы extends ПривычкаПоджимать, ПривычкаХлопатьРесницами {
    }
public interface ПривычкиПапы extends ПривычкаЧесатьБороду, ПривычкаХлюпать {
    }
public interface ПривычкиПети extends ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу {
    }
public interface ПривычкиМаши extends ПривычкаХлюпать, ПривычкаХлопатьРесницами {
    }
At pagkatapos ay ipatupad lamang ang nais na interface sa nais na klase, halimbawa, Nanay:
class Мама implements ПривычкиМамы{
@Override
public void хлопатьРесницами () {
System.out.println("Хлоп-хлоп");
    }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
Ang parehong ay maaaring gawin sa Papa, Petya at Masha . At pagkatapos, sa pagpapalawak ng pamilyang Ivanov, walang magiging problema sa mga gawi, i-shuffle lang namin ang mga ito sa pamamagitan ng pamana sa antas ng interface, tulad ng mga sangkap sa isang salad, at hindi makagawa ng isang grupo ng mga pamamaraan na may parehong pangalan. Eh, mga pangarap, mga pangarap... Bakit kailangan ang inheritance ng interface?  - 4Tama ang iginuhit na lalaki, ito ay talagang posible - ngayon ang simulation ng pamilya Ivanov ay nailigtas! Maaaring magtanong ang isang matulungin na mambabasa: "Bakit lumikha ng mga interface para sa bawat miyembro ng pamilya? Mayroon kaming isang hanay ng mga aksyon - agad na ipatupad ang mga ito para sa kinakailangang klase." Isipin natin na sa maraming parallel na mundo mayroong Petya's doubles , at lahat ng Petyas ay kailangang ipatupad ang interface na Petya's Habits
interface ПривычкиПети extends ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу

class ПетяВселеннаяХ implements ПривычкиПети
class ПетяВселеннаяY implements ПривычкиПети
// и т.д.
Paano kung walang karaniwang interface?
class ПетяВселеннаяХ implements ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу
class ПетяВселеннаяY implements ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу
// и т.д.
Nagreresulta ito sa mas paulit-ulit na code. Ang pamana ng interface ay ginagawang mas nababaluktot ang application upang baguhin, lalo na, ang mga problema sa mga paulit-ulit na pamamaraan ay maaaring malutas. Pakitandaang muli na pinapayagan ang maraming inheritance ng mga interface.
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION