Explorarea moștenirii în limbajul de programare Java

Explorarea moștenirii în limbajul de programare Java

Moștenirea este unul dintre conceptele de bază ale programării orientate pe obiecte. În programare, cuvântul moștenire reprezintă o relație în care o clasă copil își asumă starea și comportamentul unei clase părinte.





Scopul moștenirii în dezvoltarea de software este de a facilita reutilizarea unui software sigur și fiabil. Unul dintre avantajele majore ale utilizării moștenirii este că elimină codul redundant din programele dvs.





faceți Windows 10 mai rapid pentru jocuri

Cum funcționează moștenirea

Ideea din spatele moștenirii este că multe clase sau obiecte au unele din același set de atribute și metode. Prin urmare, în spiritul producerii unui software de încredere, noile clase pot trage acum din clasele conexe preexistente și, dacă este necesar, se extind asupra stărilor și comportamentelor existente.





Un exemplu real al modului în care funcționează moștenirea ar fi luarea în considerare a fructelor. Aceasta este o etichetă largă care servește la încapsularea unei game de articole diferite.

Un măr este un fruct și la fel este și portocala. Cu toate acestea, o portocală nu este un măr, deci nu ați avea fructe ca unul dintre articolele din stoc dacă ați deține un magazin. Poate că ați putea avea o secțiune de fructe în inventar și, în secțiunea respectivă, ați avea articole mai specifice, cum ar fi mere și portocale.



Așa funcționează moștenirea.

Utilizarea moștenirii în Java

Moștenirea poate fi utilizată în orice limbaj de programare care utilizează paradigma de programare orientată obiect. Cu toate acestea, modul exact în care este utilizată moștenirea depinde de limbajul de programare specific.





De exemplu, C ++ este, de asemenea, un limbaj de programare orientat pe obiecte . C ++ acceptă ceea ce este cunoscut sub numele de moștenire multiplă, în timp ce Java acceptă doar moștenirea unică.

Ceea ce înseamnă acest lucru este că în Java o clasă părinte poate avea mai multe clase copil, dar fiecare clasă copil poate avea doar o singură clasă părinte (moștenire unică). Cu toate acestea, există o modalitate de a realiza moștenirea multiplă indirectă în Java, prin crearea unei relații de bunici, părinți și copii.





Crearea clasei părinte în Java

Procesul de selectare a unei clase părinte dintr-un document de cerințe software este cunoscut sub numele de analiză orientată obiect. În timpul acestui proces, sintagma este a este adesea utilizată pentru a identifica posibile relații de moștenire. Pornind din exemplul nostru de mai sus, ar trebui să puteți vedea că fructul ar fi clasa noastră părinte.

Exemplu de clasă de fructe părinte


public class Fruit {
//Variable Declaration
protected String seed;
protected String skinColor;
protected String taste;
//Default Constructor
public Fruit(){
seed = '';
skinColor ='';
taste ='';
}
//Primary Constructor
public Fruit(String seed, String skinColor, String taste){
this.seed = seed;
this.skinColor = skinColor;
this.taste = taste;
}
//getters and setters
public String getSeed() {
return seed;
}
public void setSeed(String seed) {
this.seed = seed;
}
public String getSkinColor() {
return skinColor;
}
public void setSkinColor(String skinColor) {
this.skinColor = skinColor;
}
public String getTaste() {
return taste;
}
public void setTaste(String taste) {
this.taste = taste;
}
//eat method
public void eat(){
//general code on how to eat a fruit
}
//juice method
public void juice() {
//general code on how to juice a fruit
}
}

Unul dintre cele mai notabile aspecte ale clasei părinte de mai sus este modificatorul de acces care este utilizat cu fiecare declarație de variabilă. Modificatorul de acces protejat este ideal pentru utilizare în clasele părinte, deoarece împiedică clasele non-copil să obțină acces la atributele de date ale clasei părinte.

Mai jos, în cod, sunteți introdus la constructori, getters și setere care sunt blocuri generale pentru orice clasă Java. În cele din urmă, vi se prezintă două metode (suc și mâncare) care sunt create în clasa părinte a programului nostru, deoarece acestea sunt universale pentru toate fructele - toate fructele pot fi consumate și sucate.

Crearea de clase pentru copii în Java

Clasele pentru copii sunt de obicei numite clase specializate sau derivate deoarece moștenesc starea și comportamentul de la un părinte și adesea personalizează aceste atribute pentru a fi mai specifice.

Continuând cu exemplul nostru, ar trebui să puteți vedea de ce portocala ar fi o clasă adecvată pentru copii din clasa de fructe de mai sus.

Exemplu de clasă Orange Child


public class Orange extends Fruit{
//variable declaration
private int supremes;
//default constructor
public Orange() {
supremes = 0;
}
//primary constructor
public Orange(String seed, String skinColor, String taste, int supremes){
super(seed, skinColor, taste);
this.supremes = supremes;
}
//getters and setters
public int getsupremes() {
return supremes;
}
public void setsupremes(int supremes) {
this.supremes = supremes;
}
//eat method
public void eat(){
//how to eat an orange
}
//juice method
public void juice() {
//how to juice and orange
}
//peel method
public void peel(){
//how to peel an orange
}
}

Există o diferență între cum arată o declarație obișnuită de clasă Java și ceea ce avem în codul nostru de mai sus. Cuvântul cheie extends este cel folosit în Java pentru a face posibilă moștenirea.

În exemplul nostru de mai sus, clasa copil (portocaliu) extinde clasa părinte (fruct). Prin urmare, starea și comportamentul clasei de fructe pot fi acum accesate și modificate de clasa portocalie.

Atributul unic pe care îl are clasa noastră portocalie este identificat cu supremele variabilei (care este numele oficial pentru micile segmente găsite în portocale). Aici intră în joc specializarea; nu toate fructele au supreme, dar toate portocalele, deci rezervarea variabilei supreme pentru clasa portocalie este logică.

Adăugarea metodei de coajă la metodele de mâncare și suc preexistente este, de asemenea, logică, deoarece, deși nu toate fructele pot fi curățate, portocalele sunt deseori curățate.

Trebuie să rețineți că, dacă nu am intenționa să modificăm metodele existente de mâncare și suc, nu ar fi nevoie să le includem în clasa noastră portocalie. Metodele din clasa portocalie anulează orice metodă similară din clasa fructelor. Așadar, dacă toate fructele ar fi consumate și sucite în același mod, nu ar fi nevoie să creăm aceste metode în clasa portocalie.

Constructorii de rol joacă în moștenire

În mod implicit, constructorii clasei părinte sunt moștenite de clasele copil. Prin urmare, dacă se creează un obiect de clasă copil, aceasta înseamnă că un obiect de clasă părinte este, de asemenea, creat automat.

Revenind la exemplul nostru, de fiecare dată când este creat un nou obiect portocaliu, se creează și un obiect de fructe, deoarece o portocală este un fruct.

În culise, când este creat un obiect de clasă copil, constructorul clasei părinte este numit mai întâi urmat de constructorul clasei copil. În clasa noastră copil portocalie de mai sus, dacă se creează un obiect portocaliu fără parametri, se va apela la constructorul nostru implicit de clasă de fructe, urmat de contractorul nostru implicit de clasă portocaliu.

Metoda super din constructorul nostru principal de mai sus este necesară deoarece specifică faptul că constructorul primar - și nu constructorul implicit - al clasei de fructe părinte ar trebui să fie apelat ori de câte ori este creat un obiect portocaliu cu parametri.

Acum puteți utiliza moștenirea în Java

Din acest articol, ați putut afla ce este moștenirea, cum funcționează și de ce este un concept atât de important în programare. Acum puteți crea relațiile de moștenire utilizând limbajul de programare Java. Mai mult, acum știi cum să ocolești regula de moștenire unică a Java, creând o relație de bunici.

Credit de imagine: Andreas Wohlfahrt / Pexels

Acțiune Acțiune Tweet E-mail Cum să vă organizați codul orientat pe obiecte cu moștenire

Obținerea corectă a programării orientate pe obiecte înseamnă că trebuie să știți despre moștenire și cum poate simplifica codarea și reduce erorile.

Citiți în continuare
Subiecte asemănătoare
  • Programare
  • Java
  • Programare orientată pe obiecte
Despre autor Kadeisha Kean(21 articole publicate)

Kadeisha Kean este un dezvoltator de software complet și scriitor tehnic / tehnologic. Are capacitatea distinctă de a simplifica unele dintre cele mai complexe concepte tehnologice; producând materiale care pot fi ușor de înțeles de către orice novice în tehnologie. Este pasionată de scriere, dezvoltarea de software-uri interesante și călătoria prin lume (prin documentare).

Mai multe de la Kadeisha Kean

Aboneaza-te la newsletter-ul nostru

Alăturați-vă newsletter-ului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!

Faceți clic aici pentru a vă abona