Kas yra paveldėjimas?
Paveldėjimas yra mechanizmas, kurio metu viena klasė įgyja kitos klasės nuosavybę. Pavyzdžiui, vaikas paveldi savo tėvų bruožus. Turėdami paveldėjimą galime pakartotinai naudoti esamos klasės laukus ir metodus. Taigi paveldėjimas palengvina pakartotinį naudojimą ir yra svarbi OOP sąvoka.
Šioje pamokoje sužinosite
- Paveldėjimo rūšys
- Paveldėjimas „Java“
- „Java“ paveldėjimo pavyzdys
- Super raktinis žodis
- Sužinokite paveldėjimą OOP pavyzdyje
Paveldėjimo rūšys
„Java“ yra įvairių paveldėjimo tipų:
Vienkartinis paveldėjimas:
Vieno paveldėjimo metu viena klasė pratęsia kitą klasę (tik viena klasė).
Aukščiau pateiktoje diagramoje B klasė tęsiasi tik A klasei. A klasė yra super klasė, o B klasė yra subklasė.
Daugkartinis paveldėjimas:
Daugkartinio paveldėjimo atveju viena klasė tęsiasi daugiau nei viena klasė. „Java“ nepalaiko kelių paveldėjimų.
Kaip nurodyta pirmiau pateiktoje diagramoje, C klasė pratęsia A ir B klases.
Daugiapakopis paveldėjimas:
Daugiapakopio paveldėjimo atveju viena klasė gali paveldėti iš išvestinės klasės. Taigi išvestinė klasė tampa pagrindine naujos klasės klase.
Kaip parodyta diagramoje, C klasė yra B poklasis, o B - A klasės poklasis.
Hierarchinis paveldėjimas:
Hierarchiniame paveldėjime vieną klasę paveldi daugelis pogrupių.
Kaip nurodyta aukščiau, B, C ir D klasės paveldi tą pačią A klasę.
Hibridinis paveldėjimas:
Hibridinis paveldėjimas yra vieno ir kelių paveldėjimo derinys.
Pagal pirmiau pateiktą pavyzdį, visa visuomenė ir saugomi A klasės nariai yra paveldimi D klasėje, pirmiausia per B klasę ir, antra, per C klasę.
Pastaba: „ Java“ nepalaiko hibridinio / daugybinio paveldėjimo
Paveldėjimas „Java“
JAVA paveldėjimas yra mechanizmas, kurio metu viena klasė įgyja kitos klasės nuosavybę. Kai „Java“ yra „Is-A“ santykis tarp dviejų klasių, mes naudojame paveldėjimą. Tėvų klasė vadinama super klase, o paveldėta klasė - poklasiu. Raktinis žodis
extends
klasė naudoja paveldėti super klasės ypatybes.
Paveldėjimas yra svarbus, nes tai lemia kodo pakartotinį naudojimą.
„Java“ paveldėjimo sintaksė:
class subClass extends superClass{//methods and fields}
„Java“ paveldėjimo pavyzdys
class Doctor {void Doctor_Details() {System.out.println("Doctor Details… ");}}class Surgeon extends Doctor {void Surgeon_Details() {System.out.println("Surgen Detail… ");}}public class Hospital {public static void main(String args[]) {Surgeon s = new Surgeon();s.Doctor_Details();s.Surgeon_Details();}}
Super raktinis žodis
Puikus raktinis žodis yra panašus į „šis“ raktinis žodis.
Raktinis žodis super gali būti naudojamas norint pasiekti bet kurį pagrindinės klasės duomenų narį ar metodus.
Super raktinis žodis gali būti naudojamas kintamojo, metodo ir konstruktoriaus lygiu.
Sintaksė:
super.();
Sužinokite paveldėjimą OOP pavyzdyje
Apsvarstykite tą pačią bankininkystės programą iš ankstesnio pavyzdžio.
Mes turėtume atidaryti du skirtingus sąskaitų tipus, vieną taupymui, o kitą tikrinimui (dar vadinamą dabartine).
Palyginkime ir panagrinėkime, kaip galime naudotis kodavimu struktūrizuotu ir į objektą orientuotu programavimo požiūriu. Struktūrinis požiūris : struktūriniame programavime sukursime dvi funkcijas -
- Vienas pasitraukti
- O kitas - indėlių veiksmams.
Kadangi šios funkcijos visose sąskaitose išlieka vienodos.
OOP požiūris : naudojant OOP programavimo metodą. Mes sukurtume dvi klases.
- Kiekvienas turi deponavimo ir atsiėmimo funkcijas.
- Tai nereikalingas papildomas darbas.
Programinės įrangos pakeitimo užklausa
Dabar pasikeitė reikalavimų, susijusių su programinės įrangos pramone, įprasta specifikacija. Jūs turėtumėte pridėti privilegijuotą funkcinę banko sąskaitą su overdrafto galimybe. Kalbant apie foną, overdraftas yra priemonė, kuria galite atsiimti didesnę sumą, nei yra jūsų sąskaitos likutis.
Struktūrinis požiūris: naudodamas funkcinį metodą, turiu modifikuoti savo pasitraukimo funkciją, kuri jau yra išbandyta ir pagrįsta. Ir pridėkite metodą, kaip nurodyta toliau, pasirūpins naujais reikalavimais.
OOP požiūris: Naudodamiesi OOP požiūriu, jums tiesiog reikia parašyti naują klasę su unikaliu pašalinimo funkcijos įgyvendinimu. Niekada nelietėme išbandyto kodo.
Kitas pakeitimo prašymas
O jei reikalavimas dar pasikeis? Norėtųsi pridėti kredito kortelės sąskaitą su savo unikaliu indėlių reikalavimu .
Struktūrinis metodas: naudodami struktūrinį metodą turite dar kartą pakeisti patikrintą indėlio kodą.
OOP požiūris : Tačiau taikydami į objektą orientuotą metodą, jūs tiesiog sukursite naują klasę su unikaliu depozito metodo įgyvendinimu (žemiau esančiame paveikslėlyje paryškinta raudona spalva).
Taigi, nors iš pradžių atrodo, kad struktūrinis programavimas yra lengvas, ilgainiui OOP laimi.
Paveldėjimo pranašumas OOP
Bet galima teigti, kad visose klasėse turite pakartotinius kodo fragmentus.
Norėdami tai įveikti, sukursite tėvų klasę, sakykite „sąskaita“ ir įgyvendinsite tą pačią indėlio ir atsiėmimo funkciją. Padarykite vaikų klases paveldimomis „sąskaitos“ klasėmis. Kad jie turėtų prieigą prie sąskaitos klasės atsiėmimo ir įmokėjimo funkcijų.
Nereikalaujama, kad funkcijos būtų įgyvendinamos atskirai. Tai yra paveldėjimas java. .