Exploració de l'herència en el llenguatge de programació Java

Exploració de l'herència en el llenguatge de programació Java

L’herència és un dels conceptes bàsics de la programació orientada a objectes. En la programació, la paraula herència representa una relació en què una classe infantil assumeix l'estat i el comportament d'una classe pare.





El propòsit de l’herència en el desenvolupament de programari és facilitar la reutilització de programari segur i fiable. Un dels avantatges principals d’utilitzar l’herència és que elimina el codi redundant dels vostres programes.





millor fons de pantalla en viu HD per a Android

Com funciona l'herència

La idea darrere de l’herència és que moltes classes o objectes tenen alguns del mateix conjunt d’atributs i mètodes. Per tant, amb l'esperit de produir programari fiable, les noves classes ara es poden basar en classes relacionades preexistents i, si cal, ampliar els estats i comportaments existents.





Un exemple del món real de com funciona l’herència seria considerar els fruits. Es tracta d’una etiqueta àmplia que serveix per encapsular una sèrie d’elements diferents.

Una poma és una fruita i una taronja també. Tanmateix, una taronja no és una poma, de manera que no tindríeu fruites com un dels vostres articles en estoc si teniu una botiga. Potser podríeu tenir una secció de fruites al vostre inventari i, sota aquesta secció, tindríeu articles més específics, com ara pomes i taronges.



Així funciona l'herència.

Ús de l’herència a Java

L'herència es pot utilitzar en qualsevol llenguatge de programació que utilitzi el paradigma de programació orientat a objectes. Tanmateix, la forma exacta en què s’utilitza l’herència depèn del llenguatge de programació específic.





Per exemple, C ++ també és un llenguatge de programació orientat a objectes . C ++ admet el que es coneix com herència múltiple, mentre que Java només admet herència única.

El que això significa és que a Java una classe pare pot tenir moltes classes filles, però cada classe fill només pot tenir una sola classe pare (herència única). Tanmateix, hi ha una manera d’aconseguir una herència múltiple indirecta a Java, creant una relació d’avis, pares i fills.





Creació de la classe pare a Java

El procés de selecció d’una classe pare d’un document de requisits de programari es coneix com anàlisi orientada a objectes. Durant aquest procés, sovint s’utilitza la frase A per identificar possibles relacions d’herència. A partir del nostre exemple anterior, podríeu veure que la fruita seria la nostra classe principal.

Fruit Parent Class Exemple


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

Un dels aspectes més destacats de la classe pare anterior és el modificador d’accés que s’utilitza amb cada declaració de variable. El modificador d'accés protegit és ideal per utilitzar-lo en classes parentals, ja que impedeix que les classes que no siguin secundàries accedeixin als atributs de dades de la classe principal.

Més endavant al codi, se us presenta els constructors, els getters i els definidors que són blocs de construcció generals per a qualsevol classe Java. Finalment, se us presenten dos mètodes (suc i menjar) que es creen a la classe principal del nostre programa perquè són universals per a totes les fruites: totes les fruites es poden menjar i fer suc.

Creació de classes infantils a Java

Les classes infantils se solen anomenar classes especialitzades o derivades perquè hereten l'estat i el comportament d'un pare, i sovint personalitzen aquests atributs per ser més específics.

Seguint amb el nostre exemple, hauríeu de poder veure per què la taronja seria una classe infantil adequada de la classe de fruita anterior.

Exemple de classe infantil taronja


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

Hi ha una diferència entre l'aspecte d'una declaració de classe Java normal i el que tenim al codi anterior. La paraula clau extends és la que s’utilitza a Java per fer possible l’herència.

En el nostre exemple anterior, la classe infantil (taronja) amplia la classe pare (fruita). Per tant, l’estat i el comportament de la classe de fruites ara poden ser accedits i modificats per la classe taronja.

L’atribut únic que té la nostra classe taronja s’identifica amb el nom variable supremes (que és el nom oficial dels petits segments que es troben a les taronges). Aquí és on entra en joc l’especialització; no totes les fruites tenen supremes, sinó totes les taronges, de manera que és lògic reservar la variable suprema per a la classe taronja.

Afegir el mètode de la pell als mètodes de suc i menjar preexistents també és lògic perquè, tot i que no es poden pelar totes les fruites, les taronges sovint es pelen.

Heu de tenir en compte que, si no pretenguéssim alterar els mètodes de menjar i sucs existents, no els hauríem d’incloure a la nostra classe de taronja. Els mètodes de la classe taronja anul·len qualsevol mètode similar de la classe de fruites. Per tant, si totes les fruites es mengessin i es sucessin de la mateixa manera, no caldria crear aquests mètodes a la classe taronja.

Els constructors de papers juguen en herència

Per defecte, els constructors de classes pares són heretats per classes filles. Per tant, si es crea un objecte de classe fill, això vol dir que també es crea automàticament un objecte de classe pare.

Tornant al nostre exemple, cada vegada que es crea un nou objecte taronja també es crea un objecte de fruita perquè una taronja és una fruita.

Darrere de les escenes, quan es crea un objecte de classe infantil, primer es diu el constructor de la classe pare seguit del constructor de la classe infantil. A la nostra classe infantil taronja anterior, si es crea un objecte taronja sense cap paràmetre, es cridarà al constructor de classes de fruita predeterminat, seguit del nostre contractista de classe taronja predeterminat.

El mètode súper del nostre constructor principal anterior és necessari perquè especifica que s'ha de cridar al constructor primari (i no al constructor per defecte) de la classe de fruita pare cada vegada que es crea un objecte taronja amb paràmetres.

Ara podeu utilitzar l'herència a Java

A partir d’aquest article, heu pogut saber què és l’herència, com funciona i per què és un concepte tan important en la programació. Ara podeu crear les vostres relacions d’herència mitjançant el llenguatge de programació Java. A més, ara sabeu com evitar la regla d’herència única de Java creant una relació d’avis.

Crèdit de la imatge: Andreas Wohlfahrt / Pexels

Compartir Compartir Tweet Correu electrònic Com organitzar el vostre codi orientat a objectes amb herència

Fer correcta la programació orientada a objectes significa que heu de conèixer l’herència i com pot simplificar la codificació i reduir els errors.

Llegiu a continuació
Temes relacionats
  • Programació
  • Java
  • Programació orientada a objectes
Sobre l'autor Kadeisha Kean(21 articles publicats)

Kadeisha Kean és un desenvolupador de programari complet i escriptor tècnic / tecnològic. Té la capacitat diferent de simplificar alguns dels conceptes tecnològics més complexos; la producció de material fàcilment comprensible per a qualsevol novell en tecnologia. L’apassiona escriure, desenvolupar programes interessants i viatjar pel món (a través de documentals).

Més de Kadeisha Kean

Subscriu-te al nostre butlletí

Uniu-vos al nostre butlletí per obtenir consells tècnics, ressenyes, llibres electrònics gratuïts i ofertes exclusives.

Feu clic aquí per subscriure-us