Moștenirea în Java (cu Exemplu)
Ce este Moștenirea?
Moştenire este un mecanism prin care o clasă dobândește proprietatea altei clase. De exemplu, un copil moștenește trăsăturile părinților săi. Cu moștenire, putem reutiliza câmpurile și metodele clasei existente. Prin urmare, moștenirea facilitează reutilizarea și este un concept important de POO.
În ce este Moștenirea Java?
Java Moştenire este un mecanism prin care o clasă dobândește proprietatea altei clase. În Java, când există o relație „Is-A” între două clase, folosim Moștenirea. Clasa părinte se numește super clasă, iar clasa moștenită se numește subclasă. Cuvântul cheie extends
este folosit de subclasa pentru a moșteni caracteristicile superclasei. Moștenirea este importantă, deoarece duce la reutilizarea codului.
Java Sintaxă de moștenire:
class subClass extends superClass { //methods and fields }
Tipuri de moștenire în Java
Iată diferitele tipuri de moștenire în Java:
- Moștenirea unică
- Moștenirea multiplă
- Moștenirea pe mai multe niveluri
- Moștenirea ierarhică
- Moștenirea hibridă
1. Moștenire unică:
În moștenirea unică, o clasă extinde o altă clasă (doar o clasă).
În diagrama de mai sus, Clasa B extinde doar Clasa A. Clasa A este o super clasă și Clasa B este o Sub-clasă.
2. Moștenire multiplă:
Moștenirea multiplă este una dintre moștenirile din Java tipuri în care o clasă extinde mai mult de o clasă. Java nu acceptă moștenirea multiplă.
Conform diagramei de mai sus, Clasa C extinde Clasa A și Clasa B atât.
3. Moștenire pe mai multe niveluri:
În Moștenirea pe mai multe niveluri, o clasă poate moșteni de la o clasă derivată. Prin urmare, clasa derivată devine clasa de bază pentru noua clasă.
După cum se arată în diagramă, clasa C este subclasa B și B este o subclasa A.
4. Moștenirea ierarhică:
În Moștenirea ierarhică, o clasă este moștenită de mai multe subclase.
Conform exemplului de mai sus, Clasele B, C și D moștenesc aceeași clasă A.
5. Moștenirea hibridă:
Moștenirea hibridă este unul dintre tipurile de moștenire din Java care este o combinație de moștenire unică și multiplă.
Conform exemplului de mai sus, toți membrii publici și protejați ai clasei A sunt moșteniți în clasa D, mai întâi prin clasa B și în al doilea rând prin clasa C.
Notă: Java nu acceptă moștenirea hibridă/multiple
Moștenirea în Java Exemplu
Iată un exemplu de moștenire în Java:
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 cuvânt cheie
Cuvântul cheie super este similar cu „acest” cuvânt cheie. Cuvântul cheie super poate fi folosit pentru a accesa orice membru de date sau metode ale clasei părinte. Super cuvânt cheie poate fi folosit la variabil, metoda și nivelul constructorului.
Sintaxă:
super.<method-name>();
Verificați și: - acest cuvânt cheie în Java: Ce este și Cum se utilizează cu Exemplu
Învață Moștenirea în POO cu Exemplu
Luați în considerare aceeași aplicație bancară de la exemplul anterior.
Ar trebui să deschidem două tipuri de conturi diferite, unul pentru economisire și altul pentru verificare (cunoscut și ca curent).
Să comparăm și să studiem cum putem aborda codificarea de la a perspectiva de programare structurată și orientată pe obiecte.
Abordare structurală: În programarea structurată, vom crea două funcții –
- Unul să se retragă
- Și celălalt pentru acțiunea de depozit.
Deoarece funcționarea acestor funcții rămâne aceeași în toate conturile.
Abordarea OOP: În timp ce utilizați OOP-uri abordare de programare. Am crea două clase.
- Fiecare având implementarea funcțiilor de depunere și retragere.
- Acest lucru va redunda muncă suplimentară.
Solicitare de modificare în software
Acum există o schimbare în specificația cerințelor pentru ceva atât de comun în industria software. Ar trebui să adăugați funcționalitate Cont bancar privilegiat cu Facilitatea de descoperire de cont. Pentru un fundal, descoperirea de cont este o facilitate prin care puteți retrage o sumă mai mare decât soldul disponibil în contul dvs.
Abordare structurala: Folosind abordarea funcțională, trebuie să-mi modific funcția de retragere, care este deja testată și bazată. Și adăugați o metodă ca mai jos se va ocupa de noile cerințe.
Abordarea OOP: Folosind abordarea OOP, trebuie doar să scrieți o nouă clasă cu implementare unică a funcției de retragere. Nu am atins niciodată fragmentul de cod testat.
O altă solicitare de schimbare
Ce se întâmplă dacă cerința se schimbă în continuare? Îmi place să adăugați un cont de card de credit cu propria sa cerință unică de depozite.
Abordare structurala: Folosind abordarea structurală, trebuie să schimbați din nou codul de depozit testat.
Abordarea OOP: Dar folosind abordarea orientată pe obiecte, veți crea doar o nouă clasă cu implementarea sa unică a metodei de depozit (evidențiată cu roșu în imaginea de mai jos). Deci, chiar dacă programarea structurală pare o abordare ușoară inițial, OOP-ul câștigă pe termen lung.
Avantajele moștenirii în POO
Dar se poate argumenta că în toate clasele, aveți bucăți repetate de cod.
Pentru a depăși acest lucru, creați o clasă părinte, spuneți „cont” și implementați aceeași funcție de depunere și retragere. Și faceți clasele copil moștenite din clasa „cont”. Pentru ca aceștia să aibă acces la funcții de retragere și depunere în clasa de cont. Funcțiile nu trebuie să fie implementate individual. Aceasta este Moștenirea în java. .