Undersøgelse af arv på Java -programmeringssprog

Undersøgelse af arv på Java -programmeringssprog

Arv er et af kernebegreberne i objektorienteret programmering. I programmering repræsenterer ordet arv et forhold, hvor en børneklasse antager tilstanden og adfærden for en forældreklasse.





Formålet med arv inden for softwareudvikling er at lette genbrug af sikker og pålidelig software. En af de store fordele ved at bruge arv er, at det eliminerer overflødig kode i dine programmer.





hvordan man får linux på chromebook

Sådan fungerer arv

Ideen bag arv er, at mange klasser eller objekter har nogle af de samme sæt attributter og metoder. Derfor kan nye klasser i ånden ved at producere pålidelig software nu trække fra allerede eksisterende relaterede klasser og om nødvendigt udvide eksisterende tilstande og adfærd.





Et virkeligt eksempel på, hvordan arv fungerer, ville være at overveje frugt. Dette er en bred etiket, der tjener til at indkapsle en række forskellige varer.

Et æble er en frugt og det samme er en appelsin. En appelsin er dog ikke et æble, så du ville ikke have frugt som en af ​​dine lagervarer, hvis du ejede en butik. Måske kunne du have en frugtafdeling i din beholdning, og under den sektion ville du have mere specifikke genstande som æbler og appelsiner.



Sådan fungerer arv.

Brug af arv i Java

Arv kan bruges i ethvert programmeringssprog, der bruger det objektorienterede programmeringsparadigme. Den nøjagtige måde, hvorpå arv bruges, afhænger imidlertid af det specifikke programmeringssprog.





For eksempel, C ++ er også et objektorienteret programmeringssprog . C ++ understøtter det, der er kendt som multiple arv, mens Java kun understøtter enkelt arv.

Hvad dette betyder er, at i Java kan en forældreklasse have mange børneklasser, men hver barneklasse kan kun have en enkelt forældreklasse (enkelt arv). Der er imidlertid en måde at opnå indirekte multipel arv i Java ved at oprette et bedsteforældres, forældres og barns forhold.





Oprettelse af forældreklassen i Java

Processen med at vælge en forældreklasse fra et dokument med softwarekrav er kendt som objektorienteret analyse. Under denne proces bruges udtrykket a ofte til at identificere mulige arverelationer. Ud fra vores eksempel ovenfor skulle du kunne se, at frugt ville være vores forældreklasse.

Frugtforældreklasse Eksempel


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

Et af de mest bemærkelsesværdige aspekter ved forældreklassen ovenfor er adgangsmodifikatoren, der bruges til hver variabeldeklaration. Den beskyttede adgangsmodifikator er ideel til brug i forældreklasser, fordi den forhindrer ikke-underordnede klasser i at få adgang til forældreklassens dataattributter.

Længere nede i koden introduceres du til konstruktører, getters og settere, der er generelle byggesten for enhver Java -klasse. Endelig introduceres du til to metoder (juice og spis), der er skabt i forældreklassen i vores program, fordi de er universelle for alle frugter - alle frugter kan spises og saftes.

Oprettelse af børneklasser i Java

Børneklasser kaldes normalt specialiserede eller afledte klasser, fordi de arver tilstand og adfærd fra en forælder og tilpasser ofte disse attributter til at være mere specifikke.

Fortsat med vores eksempel, bør du kunne se, hvorfor appelsin ville være en passende barneklasse i frugtklassen ovenfor.

Orange Child Class Eksempel


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

Der er en forskel mellem, hvordan en almindelig Java -klasseerklæring ser ud, og hvad vi har i vores kode ovenfor. Nøgleordet extends er det, der bruges i Java for at muliggøre arv.

I vores eksempel ovenfor udvider børneklassen (orange) forældreklassen (frugt). Derfor kan frugtklassens tilstand og adfærd nu tilgås og ændres af den orange klasse.

Den unikke egenskab, som vores orange klasse har, er identificeret med variabelnavnet supremes (som er det officielle navn for de små segmenter, der findes i appelsiner). Det er her specialisering spiller ind; ikke alle frugter har supremer, men alle appelsiner har det, så det er logisk at reservere supremes variabel til den orange klasse.

Tilføjelse af skrælmetoden til de allerede eksisterende spise- og saftmetoder er også logisk, fordi selvom ikke alle frugter kan skrælles, bliver appelsiner ofte skrællet.

Du skal huske på, at hvis vi ikke havde til hensigt at ændre de eksisterende spise- og saftmetoder, ville vi ikke behøve at inkludere dem i vores appelsinklasse. Metoderne i den orange klasse tilsidesætter enhver lignende metode i frugtklassen. Så hvis alle frugter blev spist og saftet på samme måde, havde vi ikke brug for at oprette disse metoder i den orange klasse.

Rollekonstruktørerne spiller i arv

Som standard arves forældreklassekonstruktører af underordnede klasser. Derfor, hvis der oprettes et underordnet klasseobjekt, betyder det, at et overordnet klasseobjekt også oprettes automatisk.

Går vi tilbage til vores eksempel, hver gang der oprettes et nyt orange objekt, oprettes der også et frugtobjekt, fordi en appelsin er en frugt.

Bag kulisserne, når der oprettes et barneklasseobjekt, kaldes forældreklassens konstruktør først efterfulgt af konstruktøren af ​​barneklassen. I vores orange barneklasse ovenfor, hvis en orange genstand oprettes uden parametre, bliver vores standardfrugtklassekonstruktør kaldet, efterfulgt af vores standardorange -entreprenør.

Supermetoden i vores primære konstruktor ovenfor er nødvendig, fordi den angiver, at den primære konstruktør - og ikke standardkonstruktøren - for forældrefrugtklassen skal kaldes, når der oprettes et orange objekt med parametre.

Nu kan du bruge arv i Java

Fra denne artikel kunne du lære, hvad arv er, hvordan det fungerer, og hvorfor det er et så vigtigt begreb i programmering. Du kan nu oprette dine arverelationer ved hjælp af programmeringssproget Java. Desuden ved du nu, hvordan du kommer uden om Javas enkeltarvsregel ved at oprette et bedsteforældres forhold.

Billedkredit: Andreas Wohlfahrt / Pexels

Del Del Tweet E -mail Sådan organiseres din objektorienterede kode med arv

At få objektorienteret programmering rigtigt betyder, at du skal vide om arv, og hvordan det kan forenkle kodning og reducere fejl.

Læs Næste
Relaterede emner
  • Programmering
  • Java
  • Objektorienteret programmering
Om forfatteren Kadeisha Kean(21 artikler udgivet)

Kadeisha Kean er en softwareudvikler i fuld stak og teknisk/teknologisk forfatter. Hun har den særlige evne til at forenkle nogle af de mest komplekse teknologiske begreber; producerer materiale, der let kan forstås af enhver nybegynder i teknologi. Hun brænder for at skrive, udvikle interessant software og rejse rundt i verden (gennem dokumentarer).

Mere fra Kadeisha Kean

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for at få tekniske tips, anmeldelser, gratis e -bøger og eksklusive tilbud!

Klik her for at abonnere