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:

  1. Moștenirea unică
  2. Moștenirea multiplă
  3. Moștenirea pe mai multe niveluri
  4. Moștenirea ierarhică
  5. Moștenirea hibridă

1. Moștenire unică:

În moștenirea unică, o clasă extinde o altă clasă (doar o clasă).

Moștenire unică în Java
Moștenirea unică

Î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ă.

Moștenirea multiplă în Java
Java 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ă.

Moștenirea pe mai multe niveluri în Java
Moștenirea pe mai multe niveluri

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.


Moștenirea ierarhică în Java
Moștenirea ierarhică

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ă.


Moștenirea hibridă
Moștenirea hibridă

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:


Exemplu de Java Moştenire
Java Exemplu de moștenire

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).

Moștenirea în POO

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 –

  1. Unul să se retragă
  2. Și celălalt pentru acțiunea de depozit.

Deoarece funcționarea acestor funcții rămâne aceeași în toate conturile.

Moștenirea în POO

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ă.

Moștenirea în POO

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.

Solicitare de modificare în software

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.

Solicitare de modificare în software

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.

Solicitare de modificare în software

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.

Cerință de modificare multiplă în software

Abordare structurala: Folosind abordarea structurală, trebuie să schimbați din nou codul de depozit testat.

Abordare structurală a cererilor de modificări multiple în software

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.

Abordarea OOP cu privire la cererea de modificare multiplă

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. .

Avantajele moștenirii în POO

Avantajele moștenirii în POO