JavaRush /Java Blog /Random-TK /Näme üçin interfeýs mirasy zerur?

Näme üçin interfeýs mirasy zerur?

Toparda çap edildi
Näme üçin interfeýsler gerek? Näme üçin interfeýs mirasy zerur? Polimorfizm näme üçin zerur? Interfeýs mirasyny nädip etmelidigini okan we düşünen, ýöne munuň sebäbine düşünmedikler üçin. Geçen gezek adaty Iwanow maşgalasynyň mysalyndan peýdalanyp, interfeýsleriň näme üçin zerurdygyna göz aýladyk. Kynçylykly maşgalany sanlaşdyrmagy dowam etdirýäris. Her bir adamyň hiç kimden miras almadyk ýa-da hiç kime geçirmedik käbir endikleri bar - şahsy endikleri. Biziň wezipämiz, her bir maşgala agzasyna üýtgeşik endikler bermek. Java tekizligine geçeliň: diňe şu synplara degişli boljak synplarda özboluşly usullary durmuşa geçirmeli. Bolýar! Bu Petýa:
class Петя implements ПривычкиПапы, ПривычкиМамы {

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

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

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

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

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

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

//это переданные привычки
@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
Ajaýyp! Hemme zat bolmalysy ýaly işleýär! Birinji makalada programmanyň hakyky dünýäniň beýanydygy aýdylýar. Hakykatyň iň gyzykly häsiýeti, onuň hemişe üýtgemegi. Iwanow maşgalasy hem muňa garşy däldi, olaryň Maşa atly süýji gyzy bardy. Kirpiklerini ejemden urup, kakamdan sypyrmak endigini miras aldy. Maksatnamamyza üýtgetmeler girizmeli. Näme üçin interfeýs mirasy zerur?  - 1Gel, beýle kyn däl, esasy zat logiki pikirlenmek. Galyberse-de, interfeýsleriň näme üçin zerurdygyny hemmeler bilýär. Indi Maşanyň endikleri interfeýsini döredeliň , clapElashes () we squish () usulyny suratlandyralyň , ony Maşa durmuşa geçiriň we etdik. Şeýlelik bilen, şol bir at bilen ulanylýan usullar beýleki interfeýslerde eýýäm ýerine ýetirilen bolsa, bir gezek edip bilersiňiz. Näme üçin interfeýs mirasy zerur?  - 2Hakykatdanam, Iryoanow maşgalasynyň haýsy meýilnamalarynyň bardygyny kim bilýär, eger Serýoza dünýä inse, kakadan, ejemden, atamdan we dördünji nesilden başga birine endikleri miras aljak , her gezek interfeýs döredýän ýaly: Serýozanyň endikleri we şol ýerde beýleki interfeýslerde eýýäm ýüzlerçe gezek yglan edilip bilinjek usullary yglan ediň? Bir-iki ýa-da üç nesilde beýleki interfeýslerde eýýäm beýan edilen birmeňzeş usullar bilen interfeýs almak howpy abanýar we käbir endikleriň adyny üýtgetmeli bolsak (bu gaty mümkin - ahyrsoňy dünýä üýtgeýär) , soň bu spagetti nädip tapmalydygyny göz öňüme getirip bilemok. Galan zat, oturmak we gudrat arzuw etmek. Näme üçin interfeýs mirasy zerur?  - 3Indi, her endigiň öz interfeýsi bar bolsa. Göz öňüne getireliň:
public interface ПривычкаПрихлюпывать {
    public void прихлюпывать();
}
public interface ПривычкаПоджимать {
    public void поджимать();
}
public interface ПривычкаКовырятьВНосу {
    public void ковырятьВНосу();
}
public interface ПривычкаХлопатьРесницами {
    public void хлопатьРесницами();
}
public interface ПривычкаЧесатьБороду {
    public void чесатьБороду();
}
Soň bolsa, Legodaky ýaly, aýry-aýry endiklerden köp miras ulanyp, maşgalanyň aýry-aýry agzalarynyň endikleri üçin zerur interfeýsi ýazyp bilerdik. Şuňa meňzeş bir zat:
public interface ПривычкиМамы extends ПривычкаПоджимать, ПривычкаХлопатьРесницами {
    }
public interface ПривычкиПапы extends ПривычкаЧесатьБороду, ПривычкаХлюпать {
    }
public interface ПривычкиПети extends ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу {
    }
public interface ПривычкиМаши extends ПривычкаХлюпать, ПривычкаХлопатьРесницами {
    }
Soň bolsa islenýän klasa islenýän interfeýsi ýerine ýetiriň, mysal üçin Eje:
class Мама implements ПривычкиМамы{
@Override
public void хлопатьРесницами () {
System.out.println("Хлоп-хлоп");
    }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
Papa, Petýa we Maşa bilenem edil şonuň ýaly edilip bilner . Soň bolsa, Iwanow maşgalasynyň giňelmegi bilen endiklerde hiç hili problema bolmazdy, salatdaky maddalar ýaly interfeýs derejesinde miras alardyk we şol bir at bilen bir topar usul öndürmezdik. Eh, düýşler, düýşler ... Näme üçin interfeýs mirasy zerur?  - 4Çyzylan adam dogry aýdýar, bu hakykatdanam mümkin - indi Iwanow maşgalasynyň simulýasiýasy halas edildi! Ünsli okyjy: "Näme üçin her bir maşgala agzasy üçin interfeýs döredýärsiňiz? Bizde birnäçe hereket bar - olary zerur synp üçin derrew durmuşa geçiriň" diýen soragy berip biler. Geliň, köp paralel dünýäde Petýanyň jübütleriniň bardygyny göz öňüne getireliň we ähli Petýalar Petýanyň endikleri interfeýsini durmuşa geçirmeli.
interface ПривычкиПети extends ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу

class ПетяВселеннаяХ implements ПривычкиПети
class ПетяВселеннаяY implements ПривычкиПети
// и т.д.
Umumy interfeýs bolmadyk bolsa näme etmeli?
class ПетяВселеннаяХ implements ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу
class ПетяВселеннаяY implements ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу
// и т.д.
Bu has köp gaýtalanýan koda getirýär. Interfeýs mirasy programmany üýtgetmek üçin has çeýe edýär, esasanam gaýtalamak usullary bilen baglanyşykly meseleler çözülip bilner. Interfeýsleriň köp mirasyna rugsat berilýändigini ýadyňyzdan çykarmaň.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION