Paveldėjimas yra viena iš pagrindinių objektinio programavimo koncepcijų. Programuojant žodis paveldėjimas reiškia santykį, kuriame vaikų klasė perima tėvų klasės būseną ir elgesį.

Kuriant programinę įrangą paveldėjimo tikslas yra palengvinti pakartotinį saugios ir patikimos programinės įrangos naudojimą. Vienas iš pagrindinių paveldėjimo naudojimo pranašumų yra tai, kad jis pašalina nereikalingą kodą jūsų programose.

Kaip veikia paveldėjimas

Paveldėjimo idėja yra ta, kad daugelyje klasių ar objektų yra vienodi atributų ir metodų rinkiniai. Todėl, gaminant patikimą programinę įrangą, naujos klasės dabar gali pasisemti iš jau egzistuojančių susijusių klasių ir, jei reikia, išplėsti esamas būsenas ir elgesį.

Realus pavyzdys, kaip veikia paveldėjimas, būtų vaisių svarstymas. Tai yra plati etiketė, skirta daugybei skirtingų daiktų.

Obuolys yra vaisius, taip pat ir apelsinas. Tačiau apelsinas nėra obuolys, todėl jūs neturėtumėte vaisių kaip vienos iš atsargų, jei turite parduotuvę. Galbūt jūsų inventoriuje gali būti vaisių skyrius, o šiame skyriuje turėtumėte konkretesnių prekių, tokių kaip obuoliai ir apelsinai.

instagram viewer

Taip veikia paveldėjimas.

Paveldėjimo naudojimas „Java“

Paveldėjimas gali būti naudojamas bet kuria programavimo kalba, kuri naudoja objektinio programavimo paradigma. Tačiau tikslus paveldėjimo būdas priklauso nuo konkrečios programavimo kalbos.

Pavyzdžiui, C ++ taip pat yra į objektą orientuota programavimo kalba. C ++ palaiko vadinamąjį daugkartinį paveldėjimą, o „Java“ palaiko tik vieną paveldėjimą.

Tai reiškia, kad „Java“ tėvų klasėje gali būti daug vaikų klasių, tačiau kiekvienoje vaikų klasėje gali būti tik vieno tėvo klasė (vienas paveldėjimas). Tačiau yra būdas pasiekti netiesioginį daugkartinį paveldėjimą „Java“, sukuriant senelių, tėvų ir vaikų santykius.

Tėvų klasės kūrimas „Java“

Tėvų klasės pasirinkimas iš programinės įrangos dokumentų yra žinomas kaip objektyvi analizė. Šio proceso metu frazė „yra“ dažnai naudojama norint nustatyti galimus paveldėjimo santykius. Remdamiesi aukščiau pateiktu pavyzdžiu turėtumėte pamatyti, kad vaisiai bus mūsų tėvų klasė.

Vaisių tėvų klasės pavyzdys


viešoji vaisių klasė {
// Kintama deklaracija
saugomos styginių sėklos;
apsaugota String skinColor;
saugomas styginių skonis;
// Numatytasis konstruktorius
viešasis vaisius () {
sėkla = "";
skinColor = "";
skonis = "";
}
// Pirminis konstruktorius
viešieji vaisiai (styginių sėklos, styginių odos spalvos, virvelių skonis) {
tai.sėklos = sėkla;
this.skinColor = odos spalva;
tai.konis = skonis;
}
// getters ir seteriai
viešoji eilutė „getSeed“ () {
grąžinti sėklą;
}
public void setSeed (String seed) {
tai.sėklos = sėkla;
}
viešoji eilutė getSkinColor () {
grįžti odaColor;
}
public void setSkinColor (String skinColor) {
this.skinColor = odos spalva;
}
viešoji eilutė getTaste () {
grįžti skonis;
}
public void setTaste (Styginių skonis) {
tai.konis = skonis;
}
// valgyti metodas
public void eat () {
// bendras kodas, kaip valgyti vaisius
}
// sulčių metodas
public void sultys () {
// bendras vaisių sulčių kodas
}
}

Vienas iš žymiausių pirmiau minėtų tėvų klasės aspektų yra prieigos modifikatorius, naudojamas su kiekviena kintamojo deklaracija. „Apsaugotas“ prieigos modifikatorius idealiai tinka naudoti tėvų klasėse, nes neleidžia ne vaikų klasėms gauti prieigą prie tėvų klasės duomenų atributų.

Toliau žemiau kodo jūs esate supažindinti su konstruktoriais, gettersis ir seteriais, kurie yra bendri bet kurios „Java“ klasės elementai. Galiausiai jums pristatomi du metodai (sultys ir valgymas), kurie yra sukurti mūsų programos tėvų klasėje, nes jie yra universalūs visiems vaisiams - visus vaisius galima valgyti ir sultis.

Vaikų klasių kūrimas „Java“

Vaikų klasės paprastai vadinamos specializuotomis arba išvestinėmis klasėmis, nes jos paveldi tėvų būseną ir elgesį ir dažnai pritaiko šiuos požymius konkretesnėms.

Tęsdami mūsų pavyzdį, turėtumėte sužinoti, kodėl oranžinė būtų tinkama aukščiau išvardytų vaisių klasės vaikų klasė.

Oranžinės vaiko klasės pavyzdys


visuomenės klasė „Orange“ pratęsia vaisius {
// kintamojo deklaracija
privatūs int aukščiausi;
// numatytasis konstruktorius
viešasis oranžinis () {
aukščiausi = 0;
}
// pirminis konstruktorius
viešasis apelsinas (styginių sėklos, styginių odos spalva, styginių skonis, aukščiausi)
super (sėkla, odos spalva, skonis);
tai.aukštumai = aukščiausi;
}
// getters ir seteriai
public int getsupremes () {
grįžti aukščiausi;
}
public void setsupremes (int supremes) {
tai.aukštumai = aukščiausi;
}
// valgyti metodas
public void eat () {
// kaip valgyti apelsiną
}
// sulčių metodas
public void sultys () {
// kaip sultys ir apelsinas
}
// žievelės metodas
public void peel () {
// kaip nulupti apelsiną
}
}

Yra skirtumas tarp to, kaip atrodo įprasta „Java“ klasės deklaracija, ir to, ką turime aukščiau esančiame kode. Raktinis žodis „tęsiasi“ yra tas, kuris naudojamas „Java“, kad būtų galima paveldėti.

Mūsų pavyzdyje aukščiau vaikų klasė (oranžinė) pratęsia tėvų klasę (vaisius). Todėl dabar vaisių klasės būklę ir elgesį gali pasiekti ir keisti oranžinė klasė.

Unikalus atributas, kurį turi mūsų oranžinė klasė, yra identifikuojamas su kintamųjų pavadinimų aukščiausiomis dalimis (kuris yra oficialus mažų segmentų, esančių apelsinuose, pavadinimas). Čia atsiranda specializacija; ne visi vaisiai turi viršūnes, bet visi apelsinai, todėl aukščiausiųjų kintamųjų rezervavimas oranžinei klasei yra logiškas.

„Žievelės“ metodo pridėjimas prie jau egzistuojančių „valgymo“ ir „sulčių“ metodų taip pat logiškas, nes nors ir ne visus vaisius galima nulupti, apelsinai dažnai nulupami.

Turėtumėte nepamiršti, kad jei mes neketinome pakeisti esamų „valgymo“ ir „sulčių“ metodų, mums nereikėtų jų įtraukti į savo apelsinų klasę. Apelsinų klasės metodai viršija bet kurį panašų metodą vaisių klasėje. Taigi, jei visi vaisiai būtų valgomi ir sulčių sultys vienodai, mums nereikėtų kurti šių metodų apelsinų klasėje.

Vaidmenų konstruktoriai žaidžia paveldą

Pagal numatytuosius nustatymus tėvų klasės konstruktorius paveldi vaikų klasės. Todėl, jei sukurtas vaikų klasės objektas, tai reiškia, kad tėvų klasės objektas taip pat sukuriamas automatiškai.

Grįžtant prie mūsų pavyzdžio, kiekvieną kartą, kai sukuriamas naujas oranžinis objektas, vaisių objektas taip pat yra sukurtas, nes oranžinė yra vaisius.

Užkulisiuose, kai sukuriamas vaikų klasės objektas, pirmiausia vadinamas tėvų klasės konstruktorius, o paskui - vaikų klasės konstruktorius. Jei oranžinis objektas yra sukurtas be jokių parametrų, pirmiau nurodytoje oranžinėje vaikų klasėje bus iškviestas numatytasis vaisių klasės konstruktorius, po kurio bus numatytasis oranžinės klasės rangovas.

Aukščiau pateiktas pirminio konstruktoriaus „super“ metodas yra būtinas, nes jis nurodo, kad pagrindinis konstruktorius ir ne numatytasis vaisių klasės konstruktorius turėtų būti iškviestas, kai yra oranžinis objektas su parametrais sukurta.

Dabar Java galite naudoti paveldėjimą

Iš šio straipsnio galėjote sužinoti, kas yra paveldėjimas, kaip jis veikia ir kodėl tai yra tokia svarbi programavimo sąvoka. Dabar galite sukurti paveldėjimo ryšius naudodami „Java“ programavimo kalbą. Be to, dabar jūs žinote, kaip apeiti „Java“ paveldėjimo vieną taisyklę kuriant senelių santykius.

Vaizdo kreditas: Andreas Wohlfahrt /Pekseliai

El
Kaip sutvarkyti savo objektinį kodą naudojant paveldėjimą

Tinkamas objektyvaus programavimo būdas reiškia, kad turite žinoti apie paveldėjimą ir kaip tai gali supaprastinti kodavimą ir sumažinti klaidų skaičių.

Skaitykite toliau

Susijusios temos
  • Programavimas
  • „Java“
  • Objektinis programavimas
Apie autorių
Kadeisha Kean (Paskelbti 3 straipsniai)

Kadeisha Kean yra „Full Stack“ programinės įrangos kūrėja ir technikos / technologijų rašytoja. Ji turi aiškų sugebėjimą supaprastinti kai kurias sudėtingiausias technologines sąvokas; gamina medžiagą, kurią lengvai supranta bet kuris naujokas technologija. Ji aistringai rašo, kuria įdomią programinę įrangą ir keliauja po pasaulį (per dokumentinius filmus).

Daugiau iš Kadeisha Kean

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kuriame rasite techninių patarimų, apžvalgų, nemokamų el. Knygų ir išskirtinių pasiūlymų!

Dar vienas žingsnis…!

Prašome patvirtinti savo el. Pašto adresą el. Laiške, kurį jums ką tik išsiuntėme.

.