logo

Java paplašināt vairākas klases

Java ir uz objektu orientēta programmēšanas valoda, kas ļauj izstrādātājiem izveidot sarežģītas programmatūras sistēmas. Viena no galvenajām Java iezīmēm ir mantošana, kas ļauj klasēm mantot rekvizītus un metodes no citām klasēm. Programmā Java klase vienlaikus var paplašināt tikai vienu vecāku klasi, taču, izmantojot saskarnes, ir iespējams panākt vairākas mantojumam līdzīgas darbības. Šajā rakstā mēs izpētīsim, kā paplašināt vairākas Java klases un nodrošināt piemēru programmas ar izvadi.

Vairāku klašu paplašināšana Java

Java neļauj klasei tieši paplašināt vairākas klases. Iemesls tam ir izvairīties no dimanta problēmas, kas rodas, ja klase manto no divām klasēm, kurām ir kopīga virsklase. Lai izvairītos no šīs problēmas, Java ļauj klasei ieviest vairākas saskarnes, kas var nodrošināt līdzīgu funkcionalitāti.

Interfeiss ir abstraktu metožu kopums, kas nosaka klases uzvedību. Atšķirībā no klasēm, saskarnes nevar izveidot, bet tās var ieviest klasēs. Ieviešot saskarni, klase var mantot rekvizītus un metodes no vairākām saskarnēm. Tas ļauj klasei panākt vairākkārtēju mantojumam līdzīgu uzvedību bez dimanta problēmas. Lai paplašinātu vairākas Java klases, mums ir jāizveido interfeiss, kurā ir ietverti vecāku klašu rekvizīti un metodes. Pēc tam ieviešanas klase var ieviest saskarni un mantot vecāku klašu īpašības un metodes. Apskatīsim piemēru, lai labāk izprastu šo jēdzienu.

foreach cilpas mašīnraksts

Vairāku klašu paplašināšana Java

Šajā piemērā mēs izveidosim trīs klases: Dzīvnieks, Zīdītājs un Reptile. Pēc tam mēs izveidosim saskarni ar nosaukumu Omnivore, kas paplašinās dzīvnieku un zīdītāju klases. Visbeidzot, mēs izveidosim klasi ar nosaukumu Platypus, kas ieviesīs Omnivore saskarni.

Dzīvnieku klase saturēs metodi, ko sauc par 'ēst', kas izdrukā 'Dzīvnieks ēd'. Zīdītāju klase paplašinās dzīvnieku klasi un ietvers metodi, ko sauc par 'drinkMilk', kas drukā 'Mammal is drinking milk'. Rāpuļu klase paplašinās arī dzīvnieku klasi un ietvers metodi, ko sauc par olu dēšanu, kas drukā 'Rāpulis dēj olas'.

Šeit ir dzīvnieku klases kods:

 public class Animal { public void eat() { System.out.println('Animal is eating.'); } } 

Šeit ir zīdītāju klases kods:

 public class Mammal extends Animal { public void drinkMilk() { System.out.println('Mammal is drinking milk.'); } } 

Šeit ir rāpuļu klases kods:

dateformat.format
 public class Reptile extends Animal { public void layEggs() { System.out.println('Reptile is laying eggs.'); } } 

Tagad izveidosim Omnivore saskarni, kas paplašinās dzīvnieku un zīdītāju klases:

 public interface Omnivore extends Animal, Mammal { public void eatPlants(); } 

Visbeidzot izveidosim Platypus klasi, kas ieviesīs Omnivore saskarni:

 public class Platypus implements Omnivore { public void eat() { System.out.println('Platypus is eating.'); } public void drinkMilk() { System.out.println('Platypus is drinking milk.'); } public void eatPlants() { System.out.println('Platypus is eating plants.'); } } 

Šajā piemērā Platypus klase ievieš Omnivore saskarni, kas paplašina dzīvnieku un zīdītāju klases. Tāpēc Platypus klase pārmanto gan dzīvnieku, gan zīdītāju klases īpašības un metodes.

Pārbaudīsim savu programmu, izveidojot Platypus klases gadījumu un izsaucot tās metodes:

kat timpf augums
 public class Main { public static void main(String[] args) { Platypus p = new Platypus(); p.eat(); p.drinkMilk(); p.eatPlants(); } } 

Izvade:

 Platypus is eating. Platypus is drinking milk. Platypus is eating plants. 

Kā redzam, Platypus klase spēj mantot gan Animal, gan Mammal klases īpašības un metodes, ieviešot Omnivore saskarni. Tas ļauj mums panākt vairākas mantojumam līdzīgas darbības Java.

Kad lietot vairākām mantojumam līdzīgu uzvedību Java

Lai gan Java, izmantojot saskarnes, ir iespējams panākt vairākas mantojumam līdzīgas darbības, tas ne vienmēr ir nepieciešams vai vēlams. Patiesībā daudzi izstrādātāji apgalvo, ka vairāku mantojumu dēļ kods var kļūt sarežģītāks un grūtāk to uzturēt. Tāpēc ir svarīgi rūpīgi apsvērt, vai jūsu programmai ir nepieciešama vairākkārtēja mantojuma darbība.

Viena situācija, kurā var būt noderīga vairākas mantojumam līdzīgas darbības, ir, ja jums ir jāapvieno funkcionalitāte no vairākiem avotiem. Piemēram, ja jums ir divas klases, kas nodrošina dažāda veida funkcionalitāti, iespējams, vēlēsities tās apvienot vienā klasē, kas manto no abām klasēm. Šajā gadījumā labs risinājums var būt interfeisa ieviešana, kas paplašina abas klases. Vēl viena situācija, kurā var būt noderīga vairākas mantojumam līdzīgas darbības, ir tad, kad strādājat ar trešo pušu bibliotēkām, kas plaši izmanto mantošanu. Ja nepieciešams paplašināt vairākas trešo pušu klases, interfeisu ieviešana var būt labs veids, kā to panākt, neveidojot sarežģītas mantojuma hierarhijas.

Java nav iespējams tieši paplašināt vairākas klases. Tomēr ir iespējams panākt vairākas mantojumam līdzīgas darbības, ieviešot saskarnes, kas paplašina vairākas klases. Tas ļauj klasei mantot rekvizītus un metodes no vairākām vecākklasēm, neradot dimanta problēmu, kas var rasties tiešas vairāku mantojuma gadījumā. Lai gan noteiktās situācijās var būt noderīga vairāku veidu mantojumam līdzīga rīcība, ir svarīgi rūpīgi apsvērt, vai tas ir nepieciešams jūsu programmai. Daudzos gadījumos interfeisu un kompozīcijas izmantošana var būt labāks risinājums, lai apvienotu funkcionalitāti no vairākiem avotiem.