Mantojums ir centrālais jēdziens objektorientētajā programmēšanā (OOP) un bieži tiek uzskatīts par vienu no elementiem efektivitātes palielināšanai. Šajā apmācībā tu padziļināsi savu izpratni par mantojumu Java. Tu iemācīsies, kā strādāt ar piekļuves modificētājiem, izmantot konstruktorus un kāda loma mantojuma procesā ir kapsulēšanai.
Galvenās atziņas
- Mantojums ļauj mantot īpašības un metodes no klases.
- Piekļuves modificētājs private ierobežo piekļuvi mainīgajiem vai metodēm, kamēr protected nodrošina paplašinātu piekļuvi klasēs, kas mantot no oriģinālās klases.
- Konstruktorus jāizsauc apakšklasē, lai objekti tiktu pareizi izveidoti.
- Interfeisa metodes var vispārināti izmantot, ja ir vairākas specifiskas klases.
Sol-virkne instrukcija
Piekļuves modificētāji: protected vs. private
Ja tu klasē, piemēram, Transportlīdzeklis, deklarēsi mainīgo (piemēram, Krāsa) kā protected, tad tu vari tieši izmantot šo mainīgo atvasinātajā klasē (piemēram, Automobilis). Ja tu tomēr deklarēsi mainīgo kā private, tad apakšklasē tu nevarēsi tieši piekļūt tam.

Konkrēti tas nozīmē, ka piekļuve pie private-mainīgajiem ir iespējama tikai caur Setter un Getter metodēm.
Šis piemērs parāda, ka mums jādara setKrāsa un getKrāsa, lai piekļūtu private mainīgajam krāsa.

Ja mainīgais ir deklarēts kā protected, tu vari vienkārši piekļūt tam iekš Automobiļa klases un mainīt vērtību.
Konstruktoru izmantošana mantošanā
Definējot apakšklasi, tev jānodrošina, ka augšklases konstruktors tiek pareizi izsaukts.

Tas nodrošina, ka krāsa tiek pareizi inicializēta, izveidojot Auto objektu.

Pārliecinies, ka apakšklasē tu definē konstruktora, kas pienācīgi nodod augšklases parametrus.
Mantošana un metožu izsaukumi
Divas klases, Transportlīdzeklis un Automobilis, ļauj izmantot vispārīgus mainīgos un metodes. Ja tu definē metodi Transportlīdzeklis, tu vari to izmantot arī Automobilī, nerakstot to atkārtoti.

Šeit tiek izsaukta metode automobilisKrāsaIzvadīt, kas izvada krāsu, ko nodrošina metode getKrāsa.
Metodes piekļuves ierobežojumi
Ja tu mēģini izsaukt metodi apakšklasē, kas nav pieejama šai klasei, tu saņemsi kompilēšanas kļūdu. Mūsu piemērā ir jānodod Transportlīdzekļa objekts, lai izsauktu metodi getKrāsa.

Praktiski tas nozīmē, ka tev jānodrošina, lai metode atbilst tavam datu tipam, pirms tu to izsauc. Tādējādi tu vari nodot velosipēdu, automobili vai abus uz metodi, kas vienkārši sagaida Transportlīdzekļa objektus.
Instanču metožu izsaukumu piemērs statiskos kontekstos
Pievērs uzmanību, ka statiskajās metodēs (static) this-atslēgvārds nevar tikt izmantots, jo tas neattiecās uz konkrētu instanci. Šādās situācijās, iespējams, tev jāizmanto cita metode vai jāpārstrukturē loģika.

Izsaukums pareizi izvada krāsu meinAuto objektam.
Kopsavilkums - Mantojums Java: Ceļvedis iesācējiem
Mantojums ir svarīgs jēdziens programmēšanā ar Java, kas palīdz modularizēt un atkārtoti izmantot kodu. Šajā apmācībā tu esi iepazinis pamatus par piekļuves modificētājiem, konstruktoriem un metožu izsaukumiem attiecībā uz mantojumu.
Bieži uzdotie jautājumi
Kā es varu piekļūt private mainīgajiem apakšklasē?Piekļūt private mainīgajiem apakšklasē nevar tieši. Lieto Getter un Setter metodes.
Kāds ir starpība starp protected un private?protected ļauj piekļuvi apakšklasē un tajā pašā pakotnē, bet private ir pieejams tikai iekšējā klasē.
Vai man jādara konstruktorus apakšklasē?Jā, ja tu esi pielāgojis augšklases konstruktora, tev jādara arī konstruktori apakšklasē atbilstoši.
Vai es varu brīvi pārrakstīt metodes no augšklasēm apakšklasēs?Jā, tu vari pārrakstīt metodes, kas nav atzīmētas ar final vai static, apakšklasē, lai implementētu specifisku uzvedību.