Raziskovanje dedovanja v programskem jeziku Java

Raziskovanje dedovanja v programskem jeziku Java

Dedovanje je eden temeljnih konceptov objektno usmerjenega programiranja. V programiranju beseda dedovanje predstavlja odnos, v katerem podrejeni razred prevzame stanje in vedenje nadrejenega razreda.





Namen dedovanja pri razvoju programske opreme je olajšati ponovno uporabo varne in zanesljive programske opreme. Ena od glavnih prednosti uporabe dedovanja je, da odpravlja odvečno kodo v vaših programih.





kaj pomeni rng pri igranju iger

Kako deluje dedovanje

Ideja dedovanja je, da imajo številni razredi ali predmeti enak nabor atributov in metod. Zato lahko v duhu ustvarjanja zanesljive programske opreme novi razredi izhajajo iz že obstoječih sorodnih razredov in po potrebi razširijo obstoječa stanja in vedenje.





Pravi primer, kako dedovanje deluje, bi bilo razmisliti o sadju. To je široka oznaka, ki služi za zajetje različnih predmetov.

Jabolko je sadje in prav tako pomaranča. Vendar pomaranča ni jabolko, zato ne bi imeli sadja kot enega od svojih zalog, če bi imeli trgovino. Morda bi lahko imeli v svojem inventarju razdelek s sadjem, pod tem razdelkom pa bi imeli bolj specifične predmete, kot so jabolka in pomaranče.



Tako deluje dedovanje.

Uporaba dedovanja v Javi

Dedovanje je mogoče uporabiti v katerem koli programskem jeziku, ki uporablja paradigmo objektno usmerjenega programiranja. Natančen način uporabe dedovanja pa je odvisen od posebnega programskega jezika.





Na primer, C ++ je tudi objektno usmerjen programski jezik . C ++ podpira tako imenovano večkratno dedovanje, medtem ko Java podpira samo eno samo dedovanje.

To pomeni, da ima lahko v Javi starševski razred veliko podrejenih razredov, vendar ima lahko vsak podrejeni razred samo en sam starševski razred (eno samo dedovanje). Vendar pa obstaja način, kako v Javi doseči posredno večkratno dedovanje, tako da ustvarite odnos starih staršev, staršev in otrok.





Ustvarjanje starševskega razreda v Javi

Postopek izbire starševskega razreda iz dokumenta zahtev programske opreme je znan kot objektno usmerjena analiza. Med tem postopkom se fraza a pogosto uporablja za ugotavljanje možnih dednih razmerij. Iz zgornjega primera bi morali videti, da bi sadje bil naš matični razred.

Primer razreda starševskega sadja


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

Eden najpomembnejših vidikov zgornjega nadrejenega razreda je modifikator dostopa, ki se uporablja pri vsaki deklaraciji spremenljivke. Modifikator zaščitenega dostopa je idealen za uporabo v nadrejenih razredih, ker preprečuje dostopom razredov, ki niso podrejeni, do podatkovnih atributov nadrejenega razreda.

Nadalje v kodi so predstavljeni konstruktorji, pridobivalci in nastavitelji, ki so splošni gradniki za kateri koli razred Java. Na koncu se seznanite z dvema metodama (sok in jesti), ki sta ustvarjena v matičnem razredu našega programa, ker sta univerzalni za vse sadje - vse sadje je mogoče jesti in sočiti.

Ustvarjanje podrejenih razredov v Javi

Otroški razredi se običajno imenujejo specializirani ali izpeljani razredi, ker podedujejo stanje in vedenje od staršev in te atribute pogosto prilagodijo bolj natančno.

Če nadaljujemo z našim primerom, bi morali videti, zakaj bi bila oranžna primerna za razred otroka zgoraj.

Primer oranžnega otroškega razreda


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

Obstaja razlika med tem, kako izgleda običajna deklaracija razreda Java, in tem, kar imamo v zgornji kodi. Ključna beseda extends se uporablja v Javi za omogočanje dedovanja.

V našem primeru zgoraj podrejeni razred (oranžna) razširi starševski razred (sadje). Zato lahko oranžni razred zdaj dostopa in spreminja stanje in vedenje razreda sadja.

Edinstven atribut, ki ga ima naš oranžni razred, je identificiran z imenom spremenljivke supremes (ki je uradno ime za majhne segmente, ki jih najdemo v pomarančah). Tu pride do specializacije; nimajo vsi plodovi supremes, imajo pa vse pomaranče, zato je shranjevanje spremenljivke supremes za razred pomaranče logično.

Logično je dodati metodo lupljenja že obstoječim načinom prehranjevanja in sokov, saj čeprav ni mogoče olupiti vseh sadežev, se pomaranče pogosto olupijo.

Upoštevati morate, da če ne nameravamo spremeniti obstoječih načinov prehranjevanja in sokov, jih ne bi bilo treba vključiti v naš razred pomaranč. Metode v razredu pomaranče preglasijo vse podobne metode v razredu sadja. Če bi torej vse sadje pojedli in sočili na enak način, teh metod ne bi bilo treba ustvarjati v razredu pomaranč.

Konstruktorji vlog igrajo v dediščino

Konstruktorje nadrejenih razredov privzeto podedujejo podrejeni razredi. Če torej nastane predmet podrejenega razreda, to pomeni, da se samodejno ustvari tudi predmet nadrejenega razreda.

Če se vrnemo k našemu primeru, se ob vsakem ustvarjanju novega oranžnega predmeta ustvari tudi sadni objekt, ker je pomaranča sadje.

Ko se ustvari objekt podrejenega razreda, se najprej pokliče konstruktor nadrejenega razreda, ki mu sledi konstruktor podrejenega razreda. V našem oranžnem podrejenem razredu zgoraj, če je oranžni objekt ustvarjen brez parametrov, bo poklican privzeti konstruktor sadnega razreda, ki mu sledi privzeti izvajalec oranžnega razreda.

Metoda super v našem zgornjem primarnem konstruktorju je potrebna, ker določa, da je treba primarni konstruktor - in ne privzeti konstruktor - razreda nadrejenega sadja poklicati vsakič, ko je ustvarjen oranžni predmet s parametri.

Zdaj lahko uporabite dedovanje v Javi

Iz tega članka ste lahko izvedeli, kaj je dedovanje, kako deluje in zakaj je tako pomemben koncept pri programiranju. Sedaj lahko ustvarite svoje dedne odnose z uporabo programskega jezika Java. Poleg tega zdaj veste, kako zaobiti pravilo enojnega dedovanja Jave z ustvarjanjem razmerja stari starši.

Avtor slike: Andreas Wohlfahrt / Peksli

Deliti Deliti Cvrkutati E-naslov Kako organizirati svojo objektno usmerjeno kodo z dedovanjem

Pravilno pridobivanje objektno naravnanega programiranja pomeni, da morate vedeti o dedovanju in kako lahko poenostavi kodiranje in zmanjša napake.

Preberite Naprej
Sorodne teme
  • Programiranje
  • Java
  • Objektno usmerjeno programiranje
O avtorju Kadeisha Kean(21 objavljenih člankov)

Kadeisha Kean je razvijalka programske opreme in tehnična/tehnološka pisateljica. Ima izrazito sposobnost poenostavitve nekaterih najbolj zapletenih tehnoloških konceptov; izdelavo materiala, ki ga lahko razume vsak začetnik tehnologije. Strastno piše, razvija zanimivo programsko opremo in potuje po svetu (skozi dokumentarne filme).

Več od Kadeisha Kean

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e -knjige in ekskluzivne ponudbe!

Kliknite tukaj, če se želite naročiti