Utforske arv på Java -programmeringsspråket

Utforske arv på Java -programmeringsspråket

Arv er et av kjernekonseptene innen objektorientert programmering. I programmering representerer ordet arv et forhold der en barneklasse antar tilstanden og oppførselen til en foreldreklasse.





Formålet med arv i programvareutvikling er å lette gjenbruk av sikker og pålitelig programvare. En av de store fordelene med å bruke arv er at den eliminerer overflødig kode i programmene dine.





hvordan logger du deg på playstation -nettverk

Slik fungerer arv

Ideen bak arv er at mange klasser eller objekter har noen av de samme attributtene og metodene. Derfor, i ånden for å produsere pålitelig programvare, kan nye klasser nå trekke fra allerede eksisterende relaterte klasser, og om nødvendig utvide eksisterende tilstander og atferd.





Et eksempel fra den virkelige verden på hvordan arv fungerer, ville være å vurdere frukt. Dette er en bred etikett som tjener til å innkapsle en rekke forskjellige varer.

Et eple er en frukt og det samme er en appelsin. Imidlertid er en appelsin ikke et eple, så du ville ikke ha frukt som en av lagervarene dine hvis du eide en butikk. Kanskje du kan ha en fruktdel i beholdningen din, og under den delen vil du ha mer spesifikke varer som epler og appelsiner.



Det er slik arv fungerer.

Bruke arv i Java

Arv kan brukes i alle programmeringsspråk som bruker det objektorienterte programmeringsparadigmet. Imidlertid er den nøyaktige måten arv brukes på, avhengig av det spesifikke programmeringsspråket.





For eksempel, C ++ er også et objektorientert programmeringsspråk . C ++ støtter det som kalles multiple arv, mens Java bare støtter enkelt arv.

Hva dette betyr er at i Java kan en foreldreklasse ha mange barneklasser, men hver barneklasse kan bare ha en enkelt foreldreklasse (enkelt arv). Imidlertid er det en måte å oppnå indirekte flere arv i Java, ved å opprette et besteforeldre, foreldre og barn forhold.





Opprette foreldreklassen i Java

Prosessen med å velge en overordnet klasse fra et dokument med programvarekrav er kjent som objektorientert analyse. Under denne prosessen brukes uttrykket a ofte for å identifisere mulige arverelasjoner. Ved å trekke fra vårt eksempel ovenfor, bør du kunne se at frukt ville være vår foreldreklasse.

Eksempel på fruktforeldre


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 av de mest bemerkelsesverdige aspektene ved foreldreklassen ovenfor er tilgangsmodifikatoren som brukes med hver variabeldeklarasjon. Den beskyttede tilgangsmodifikatoren er ideell for bruk i foreldreklasser fordi den forhindrer ikke-barneklasser i å få tilgang til dataattributtene til foreldreklassen.

Lenger ned i koden blir du introdusert for konstruktører, gettere og settere som er generelle byggesteiner for alle Java -klasser. Til slutt blir du introdusert for to metoder (juice og spis) som er opprettet i foreldreklassen til programmet vårt fordi de er universelle for alle frukter - alle frukter kan spises og juices.

Opprette barneklasser i Java

Barneklasser kalles vanligvis spesialiserte eller avledede klasser fordi de arver tilstand og atferd fra en forelder, og tilpasser ofte disse attributtene til å være mer spesifikke.

Fortsetter med vårt eksempel, bør du kunne se hvorfor appelsin ville være en passende barneklasse i fruktklassen ovenfor.

Orange barneklasseeksempel


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

Det er en forskjell mellom hvordan en vanlig Java -klasseerklæring ser ut, og hva vi har i koden ovenfor. Strekkordet er det som brukes i Java for å gjøre arv mulig.

I vårt eksempel ovenfor utvider barneklassen (oransje) foreldreklassen (frukt). Derfor kan tilstanden og oppførselen til fruktklassen nå nås og endres av den oransje klassen.

Den unike egenskapen som vår oransje klasse har, er identifisert med variabelnavnet supremes (som er det offisielle navnet på de små segmentene som finnes i appelsiner). Det er her spesialisering spiller inn; ikke alle frukter har supremer, men alle appelsiner har det, så det er logisk å reservere supremes variabel for den oransje klassen.

Å legge skallemetoden til de eksisterende mat- og juicemetodene er også logisk fordi selv om ikke alle frukter kan skrelles, blir appelsiner ofte skrelt.

Du bør huske på at hvis vi ikke hadde til hensikt å endre de eksisterende spise- og juicemetodene, ville vi ikke trenge å inkludere dem i vår appelsinklasse. Metodene i den oransje klassen tilsidesetter enhver lignende metode i fruktklassen. Så hvis all frukt ble spist og saftet på samme måte, ville vi ikke trenge å lage disse metodene i den oransje klassen.

Rollekonstruktørene spiller i arv

Som standard arves klassekonstruktører av barneklasser. Derfor, hvis et barnklasseobjekt opprettes, betyr dette at et overordnet klasseobjekt også opprettes automatisk.

Når vi går tilbake til vårt eksempel, hver gang et nytt oransje objekt blir opprettet, blir det også opprettet et fruktobjekt fordi en appelsin er en frukt.

Bak kulissene, når et barnklasseobjekt blir opprettet, kalles først konstruktøren for foreldreklassen, etterfulgt av konstruktøren av barneklassen. I vår oransje barneklasse ovenfor, hvis en oransje gjenstand er opprettet uten noen parametere, blir vår standard fruktklassekonstruktør kalt, etterfulgt av vår standard oransje klasse entreprenør.

Supermetoden i vår primære konstruktør ovenfor er nødvendig fordi den spesifiserer at den primære konstruktøren - og ikke standardkonstruktøren - for den overordnede fruktklassen skal kalles når et oransje objekt med parametere opprettes.

Nå kan du bruke arv i Java

Fra denne artikkelen kunne du lære hva arv er, hvordan det fungerer, og hvorfor det er et så viktig begrep i programmering. Du kan nå opprette dine arverelasjoner ved hjelp av programmeringsspråket Java. Videre vet du nå hvordan du kommer deg rundt Javas enkeltarveregel ved å opprette et besteforeldreforhold.

Bildekreditt: Andreas Wohlfahrt / Pexels

Dele Dele kvitring E -post Hvordan organisere din objektorienterte kode med arv

Å få objektorientert programmering riktig betyr at du trenger å vite om arv og hvordan det kan forenkle koding og redusere feil.

Les neste
Relaterte temaer
  • Programmering
  • Java
  • Objektorientert programmering
Om forfatteren Kadeisha Kean(21 artikler publisert)

Kadeisha Kean er en fullstabel programvareutvikler og teknisk/teknologisk skribent. Hun har den særegne evnen til å forenkle noen av de mest komplekse teknologiske konseptene; produsere materiale som lett kan forstås av enhver nybegynner i teknologi. Hun brenner for å skrive, utvikle interessant programvare og reise verden rundt (gjennom dokumentarer).

Mer fra Kadeisha Kean

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis ebøker og eksklusive tilbud!

Klikk her for å abonnere