Ce este Moștenirea?
Moștenirea este un mecanism în 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ștenirea, putem reutiliza câmpurile și metodele clasei existente. Prin urmare, moștenirea facilitează reutilizarea și este un concept important al POO.
În acest tutorial, veți învăța-
- Tipuri de moștenire
- Moștenirea în Java
- Exemplu de moștenire Java
- Super cuvânt cheie
- Aflați moștenirea în POO cu exemplul
Tipuri de moștenire
Există diferite tipuri de moștenire în Java:
Moștenirea unică:
În moștenirea unică, o clasă extinde o altă clasă (o singură clasă).
În diagrama de mai sus, Clasa B extinde numai Clasa A. Clasa A este o super clasă, iar Clasa B este o Subclasă.
Moștenirea multiplă:
În Moștenirea multiplă, o clasă extinde mai mult de o clasă. Java nu acceptă moștenirea multiplă.
Conform schemei de mai sus, Clasa C extinde Clasa A și Clasa B ambele.
Moștenirea pe mai multe niveluri:
În Moștenirea pe mai multe niveluri, o clasă poate moșteni dintr-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 a subclasei Clasa A.
Moștenirea ierarhică:
În Moștenirea ierarhică, o clasă este moștenită de mai multe sub-clase.
Conform exemplului de mai sus, clasa B, C și D moștenesc aceeași clasă A.
Moștenirea hibridă:
Moștenirea hibridă este o combinație de moștenire simplă ș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ă / multiplă
Moștenirea în Java
MOȘTENIREA JAVA este un mecanism în care o clasă dobândește proprietatea altei clase. În Java, când există o relație „Is-A” între două clase, folosim Moștenire. Clasa părinte se numește super clasă, iar clasa moștenită se numește subclasă. Cuvântul cheie
extends
este folosit de subclasă pentru a moșteni caracteristicile superclaselor.
Moștenirea este importantă, deoarece duce la reutilizarea codului.
Sintaxa moștenirii Java:
class subClass extends superClass{//methods and fields}
Exemplu de moștenire 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 cuvântul cheie „acest”.
Cuvântul cheie super poate fi utilizat pentru a accesa orice membru de date sau metode ale clasei părinte.
Cuvântul cheie super poate fi utilizat la nivel de variabilă, metodă și constructor.
Sintaxă:
super.();
Aflați moștenirea în POO cu exemplul
Luați în considerare aceeași aplicație bancară din exemplul anterior.
Ar trebui să deschidem două tipuri de conturi diferite, unul pentru salvare și altul pentru verificare (cunoscut și sub numele de curent).
Să comparăm și să studiem modul în care putem aborda codarea dintr-o perspectivă de programare structurată și orientată obiect. Abordare structurală : În programarea structurată, vom crea două funcții -
- Una de retras
- Iar cealaltă pentru acțiune de depozit.
Deoarece funcționarea acestor funcții rămâne aceeași în toate conturile.
Abordarea OOP : În timp ce utilizați abordarea de programare OOPs. Am crea două clase.
- Fiecare are implementarea funcțiilor de depunere și retragere.
- Acest lucru va fi redundant.
Cerere de modificare în software
Acum există o schimbare în specificațiile cerințelor pentru ceva care este atât de comun în industria software-ului. Ar trebui să adăugați un cont bancar cu funcționalitate privilegiat cu facilitatea de descoperit de cont. Pentru un fundal, descoperitul de cont este o facilitate prin care puteți retrage o sumă mai mare decât soldul disponibil în contul dvs.
Abordare structurală: 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 cea de mai jos pentru a se 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ă codul testat.
O altă cerere de schimbare
Ce se întâmplă dacă cerința se schimbă în continuare? Doriți să adăugați un cont de card de credit cu propria cerință unică de depozite .
Abordare structurală: folosind abordarea structurală, trebuie să schimbați din nou bucata de cod de depozit testată.
Abordarea OOP : Dar folosind abordarea orientată obiect, veți crea doar o nouă clasă cu implementarea sa unică a metodei de depunere (evidențiată în roșu în imaginea de mai jos).
Deci, chiar dacă programarea structurală pare o abordare ușoară inițial, OOP câștigă pe termen lung.
Avantajul moștenirii în POO
Dar se poate susține că, în toate clasele, aveți o bucată repetată 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 clasa „cont”. Astfel, aceștia vor avea acces la retragerea și depunerea funcțiilor în clasa de cont.
Funcțiile nu trebuie să fie implementate individual. Aceasta este Moștenirea în Java. .