Innkapsling i Java - Hvordan mestre OOP med innkapsling?



Denne artikkelen om innkapsling i Java vil hjelpe deg med å forstå kjernekonseptene for å skjule implementeringsdetaljer sammen med forskjellige enkle eksempler.

Objektorientert programmering eller bedre kjent som OOP er en av de viktigste søylene i Java som har utnyttet sin kraft og brukervennlighet. For å bli en profesjonell Java-utvikler, må du få en feilfri kontroll over de forskjellige som , Abstraksjon , Innkapsling og polymorfisme. Gjennom mediet i denne artikkelen vil jeg gi deg et fullstendig innblikk i et av de viktigste konseptene i OOP, dvs. innkapsling i Java og hvordan det oppnås.

Nedenfor er emnene jeg skal diskutere i denne artikkelen:





Du kan også gå gjennom denne innspillingen av der du kan forstå emnene på en detaljert måte med eksempler.



Introduksjon til innkapsling

Innkapsling refererer til innpakning av data under en enkelt enhet. Det er mekanismen som binder kode og dataene den manipulerer. En annen måte å tenke på innkapsling er at det er et beskyttende skjold som forhindrer at data får tilgang til koden utenfor dette skjoldet. I dette er variablene eller dataene til a er skjult for alle andre klasser og kan kun nås gjennom alle medlemsfunksjoner i egen klasse der de blir erklært.

La oss ta eksemplet med en medisinsk kapsel, der legemidlet alltid er trygt inne i kapselen. Tilsvarende, gjennom innkapsling, er metodene og variablene i en klasse godt skjult og trygt.



Innkapsling-Innkapsling i Java-EdurekaInnkapsling i Java kan oppnås ved:

  • Å erklære variablene i en klasse som private.
  • Tilby offentlige setter- og gettermetoder for å endre og se variablers verdier.

La oss nå se på koden for å få en bedre forståelse av innkapsling:

hva er jframe i java
offentlig klasse Student {privat String navn offentlig String getName () {retur navn} offentlig ugyldig setName (String navn) {this.name = navn}} klasse Test {offentlig statisk ugyldig hoved (String [] args) {Student s = ny Student () s.setName ('Harry Potter') System.out.println (s.getName ())}}

Som du kan se i koden ovenfor, har jeg opprettet en klasse Student som har en privat Navn . Deretter har jeg laget en getter og setter for å få og sette navnet på en student. Ved hjelp av disse metodene må enhver klasse som ønsker å få tilgang til navnevariabelen gjøre det ved hjelp av disse getter- og settermetodene.

La oss nå se et eksempel til og forstå innkapsling i dybden. I dette eksemplet har bilklassen to felt - navn og topphastighet. Her blir begge erklært som private, noe som betyr at de ikke er tilgjengelige direkte utenfor klassen. Vi har noen getter- og settermetoder som getName, setName, setTopSpeed ​​etc., og de blir erklært offentlige. Disse metodene er utsatt for “utenforstående” og kan brukes til å endre og hente data fra bilobjektet. Vi har en metode for å stille inn toppfart på kjøretøyet og to gettermetoder for å hente maks hastighetsverdi enten i MPH eller KMHt. Så i utgangspunktet er dette hva innkapsling gjør - det skjuler implementeringen og gir oss de verdiene vi ønsker. La oss nå se på koden nedenfor.

pakke Edureka public class Car {private String name private double topSpeed ​​public Car () {} public String getName () {return name} public void setName (String name) {this.name = name} public void setTopSpeed ​​(double speedMPH) {topSpeed = speedMPH} offentlig dobbel getTopSpeedMPH () {retur topSpeed} offentlig dobbel getTopSpeedKMH () {retur topSpeed ​​* 1.609344}}

Her oppretter hovedprogrammet et bilobjekt med et gitt navn og bruker settermetoden for å lagre toppfarten for denne forekomsten. Ved å gjøre dette kan vi enkelt få hastigheten i MPH eller KMH uten å bry oss om hvordan hastighet omregnes i bilklassen.

pakke Edureka public class Eksempel {public static void main (String args []) Car car = new Car () car.setName ('Mustang GT 4.8-liter V8') car.setTopSpeed ​​(201) System.out.println (car. getName () + 'topphastighet i MPH er' + car.getTopSpeedMPH ()) System.out.println (car.getName () + 'topphastighet i KMH er' + car.getTopSpeedKMH ())

So, dette er hvordan innkapsling kan oppnås i Java. La oss nå gå videre og se hvorfor trenger vi innkapsling.

Hvorfor trenger vi innkapsling i Java?

Innkapsling er viktig i Java fordi:

  • Det styrer måten data er tilgjengelig på
  • Endrer koden basert på forutsetningene
  • Hjelper oss med å oppnå et løst par
  • Oppnår enkelheten i applikasjonen vår
  • Det lar deg også endre delen av koden uten å forstyrre noen andre funksjoner eller kode som er tilstede i programmet

La oss nå se på et lite eksempel som illustrerer behovet for innkapsling.

class Student {int id String name} public class Demo {public static void main (String [] args) {Student s = new Student () s.id = 0 s.name = '' s.name = null}}

I eksemplet ovenfor inneholder den to forekomstvariabler som tilgangsmodifikator. Så hvilken som helst klasse i samme pakke kan tilordne og endre verdiene til disse variablene ved å lage et objekt fra den klassen. Dermed har vi ikke kontroll over verdiene som er lagret i studentklassen som variabler. For å løse dette problemet, kapsler vi inn studentklassen.

Så dette var de få tipsene som skildrer behovet for innkapsling. La oss nå se noen fordeler med innkapsling.

Fordeler med innkapsling

    • Data skjuler: Her vil en bruker ikke ha noen anelse om den indre implementeringen av klassen. Selv brukeren vil ikke være klar over hvordan klassen lagrer verdier i variablene. Han / hun vil bare være klar over at vi overfører verdiene til en settermetode, og variabler blir initialisert med den verdien.
    • Økt fleksibilitet: Her kan vi lage variablene i klassen som skrivebeskyttet eller skrivebeskyttet avhengig av vårt krav. I tilfelle du ønsker å gjøre variablene som skrivebeskyttet, må vi utelate settermetodene som setName (),sett Alder() osv., eller hvis vi ønsker å gjøre variablene som skrivbare, må vi utelate get-metodene som getName (), getAge () etc. fra programmet ovenfor.
    • Gjenbrukbarhet: Det forbedrer også gjenbrukbarheten og er enkel å endre med nye krav.

Nå som vi har forstått grunnleggende om innkapsling, la oss dykke ned i det siste emnet i denne artikkelen og forstå innkapsling i detalj ved hjelp av et sanntidseksempel.

Et sanntidseksempel på innkapsling

La oss vurdere et TV-eksempel og forstå hvordan interne implementeringsdetaljer er skjult for klassen utenfor.I utgangspunktet skjuler vi indre kodedata, dvs. kretser fra den eksterne verden ved omslaget. Nå i , dette kan oppnås ved hjelp av tilgangsmodifikatorer. Tilgangsmodifikatorer angir tilgang eller nivå for en klasse, konstruktørvariabler etc. Som du kan se i koden nedenfor, har jeg brukt privat tilgangsmodifikator for å begrense tilgangsnivået til klassen. Variabler erklært som private er kun tilgjengelige innen TV-klassen.

offentlig klasse TV {privat dobbel bredde privat dobbel høyde privat dobbelt Skjermstørrelse privat int maxVolumetrykk int volum privat boolsk kraft offentlig TV (dobbel bredde, dobbel høyde, dobbel skjermSize) {dette.bredde dette.høyde this.screenSize = ScreenSize} offentlig dobbel kanalTuning (int-kanal) {switch (channel) {case1: return 34.56 case2: return 54.89 case3: return 73.89 case1: return 94.98} return 0} public int reduceVolume () {if (0volume) volume ++ return volume}} class test {public static void main (String args []) {Television t = new Television (11.5,7,9) t.powerSwitch () t.channelTuning (2) t.decreaseVolume () t.increaseVolume () television. // Kaster feil som variabel er privat og kan ikke nås utenfor klassen}}

I eksemplet ovenfor har jeg erklært alle variablene som private og metoder, konstruktører og klasser som offentlige. Her kan konstruktører, metoder nås utenfor klassen. Når jeg lageren gjenstandav TV-klassen, kan den få tilgang til metodene og konstruktørene som er tilstede i klassen, mens variabler som er erklært med privat tilgangsmodifikator er skjult. Det er derfor når du prøver å få tilgang bredde variabel i eksemplet ovenfor kaster deten feil. Slik er interne implementeringsdetaljer skjult for de andre klassene. Slik oppnås innkapsling i Java.

Dette bringer oss til slutten av denne artikkelen om 'Encapsulation in Java'. Håper, du syntes det var informativt, og det hjalp til med å øke verdien til din kunnskap. Hvis du ønsker å lære mer om Java, kan du referere til

Nå som du har forstått 'hva er innkapsling i Java', sjekk ut av Edureka, et pålitelig online læringsfirma med et nettverk av mer enn 250 000 fornøyde elever spredt over hele verden. Edurekas Java J2EE- og SOA-opplæring og sertifiseringskurs er designet for studenter og fagpersoner som ønsker å være Java-utvikler. Kurset er designet for å gi deg et forsprang i Java-programmering og trene deg for både kjerne- og avanserte Java-konsepter sammen med forskjellige Java-rammer som Hibernate & Spring.

Har du et spørsmål til oss? Vennligst nevn det i kommentarfeltet i denne 'Encapsulation in Java' -bloggen, så kommer vi tilbake til deg så snart som mulig.