Indkapsling i Java - Hvordan mestrer man OOP'er med indkapsling?

Denne artikel om indkapsling i Java hjælper dig med at forstå kernebegreberne ved at skjule implementeringsoplysninger sammen med forskellige enkle eksempler.

Objektorienteret programmering eller bedre kendt som OOP'er er en af ​​de største søjler i Java, der har udnyttet sin magt og brugervenlighed. For at blive en professionel Java-udvikler skal du have en fejlfri kontrol over de forskellige synes godt om , Abstraktion , Indkapsling og polymorfisme. Gennem mediet i denne artikel vil jeg give dig et komplet indblik i et af de vigtigste begreber ved OOP'er, dvs. indkapsling i Java, og hvordan det opnås.



Nedenfor er de emner, jeg vil diskutere i denne artikel:



Du kan også gennemgå denne optagelse af hvor du kan forstå emnerne på en detaljeret måde med eksempler.



mine sql tutorials til begyndere

Introduktion til indkapsling

Indkapsling refererer til indpakning af data under en enkelt enhed. Det er den mekanisme, der binder kode og de data, den manipulerer. En anden måde at tænke på indkapsling er, det er et beskyttende skjold, der forhindrer data i at få adgang til koden uden for dette skjold. I dette er variablerne eller dataene for en er skjult for enhver anden klasse og kan kun tilgås gennem enhver medlemsfunktion i egen klasse, hvori de erklæres.

Lad os nu tage eksemplet med en medicinsk kapsel, hvor lægemidlet altid er sikkert inde i kapslen. Tilsvarende er metoderne og variablerne i en klasse gennem indkapsling godt skjult og sikkert.



Indkapsling-Indkapsling i Java-EdurekaIndkapsling i Java kan opnås ved:

  • At erklære variablerne i en klasse som private.
  • Tilvejebringelse af offentlige setter- og gettermetoder til at ændre og se variablernes værdier.

Lad os nu se på koden for at få en bedre forståelse af indkapsling:

flet sorteringsprogram i java
offentlig klasse Elev {privat Strenge navn offentlig String getName () {returnavn} offentlig ugyldig sætnavn (String navn) {this.name = navn}} klasse Test {offentlig statisk ugyldig hoved (String [] args) {Student s = ny elev () s.setName ('Harry Potter') System.out.println (s.getName ())}}

Som du kan se i ovenstående kode, har jeg oprettet en klasse elev, der har en privat navn . Dernæst har jeg oprettet en getter og setter for at få og indstille navnet på en studerende. Ved hjælp af disse metoder skal enhver klasse, der ønsker at få adgang til navnevariablen, gøre det ved hjælp af disse getter- og settermetoder.

Lad os nu se endnu et eksempel og forstå indkapsling i dybden. I dette eksempel har klassen Car to felter –name og topSpeed. Her erklæres begge som private, hvilket betyder at de ikke kan fås direkte uden for klassen. Vi har nogle getter- og settermetoder som getName, setName, setTopSpeed ​​osv., Og de erklæres som offentlige. Disse metoder udsættes for “outsidere” og kan bruges til at ændre og hente data fra bilobjektet. Vi har en metode til at indstille køretøjets tophastighed og to gettermetoder til at hente den maksimale hastighedsværdi enten i MPH eller KMHt. Så dybest set er dette, hvad indkapsling gør - det skjuler implementeringen og giver os de værdier, vi ønsker. Lad os nu 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 dobbelt getTopSpeedMPH () {return topSpeed} offentlig dobbelt getTopSpeedKMH () {return topSpeed ​​* 1.609344}}

Her opretter hovedprogrammet et bilobjekt med et givet navn og bruger setter-metoden til at gemme tophastigheden i dette tilfælde. Ved at gøre dette kan vi nemt få hastigheden i MPH eller KMH uden at bekymre os om, hvordan hastigheden konverteres 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 () + 'tophastighed i MPH er' + car.getTopSpeedMPH ()) System.out.println (car.getName () + 'tophastighed i KMH er' + car.getTopSpeedKMH ())

So, dette er, hvordan indkapsling kan opnås i Java. Lad os nu gå videre og se, hvorfor har vi brug for indkapsling.

Hvorfor har vi brug for indkapsling i Java?

Indkapsling er vigtig i Java, fordi:

  • Det styrer vejen for datatilgængelighed
  • Ændrer koden ud fra forudsætningerne
  • Hjælper os med at opnå et løst par
  • Opnår enkelheden i vores applikation
  • Det giver dig også mulighed for at ændre den del af koden uden at forstyrre andre funktioner eller kode, der findes i programmet

Lad os nu overveje et lille eksempel, der illustrerer behovet for indkapsling.

klasse 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 ovenstående eksempel indeholder den to instansvariabler som adgangsmodifikator. Så enhver klasse inden for den samme pakke kan tildele og ændre værdierne for disse variabler ved at oprette et objekt fra den klasse. Således har vi ikke kontrol over de værdier, der er gemt i klassen Student som variabler. For at løse dette problem indkapsler vi studentklassen.

Så disse var de få pointer, der skildrer behovet for indkapsling. Lad os nu se nogle fordele ved indkapsling.

Fordele ved indkapsling

    • Data skjuler: Her vil en bruger ikke have nogen idé om den indre implementering af klassen. Selv brugeren vil ikke være opmærksom på, hvordan klassen lagrer værdier i variablerne. Han / hun vil kun være opmærksom på, at vi overfører værdierne til en settermetode, og at variabler bliver initialiseret med den værdi.
    • Øget fleksibilitet: Her kan vi gøre variablerne i klassen til skrivebeskyttet eller skrivebeskyttet afhængigt af vores krav. Hvis du ønsker at gøre variablerne som skrivebeskyttede, skal vi udelade settermetoderne som setName (),setAge() osv., eller hvis vi ønsker at gøre variablerne som skrivebeskyttede, er vi nødt til at udelade get-metoderne som getName (), getAge () osv. fra ovenstående program.
    • Genanvendelighed: Det forbedrer også genanvendeligheden og er let at ændre med nye krav.

Nu hvor vi har forstået det grundlæggende ved indkapsling, lad os dykke ned i det sidste emne i denne artikel og forstå indkapsling i detaljer ved hjælp af et realtidseksempel.

Et realtidseksempel på indkapsling

Lad os overveje et tv-eksempel og forstå, hvordan detaljer om intern implementering er skjult for den eksterne klasse.Grundlæggende skjuler vi i dette eksempel indre kodedata, dvs. kredsløb fra den eksterne verden ved omslaget. Nu inde , dette kan opnås ved hjælp af adgangsmodifikatorer. Adgangsmodifikatorer indstiller adgang eller niveau for en klasse, konstruktørvariabler osv. Som du kan se i nedenstående kode, har jeg brugt privat adgangsmodifikator til at begrænse klassens adgangsniveau. Variabler, der er erklæret private, er kun tilgængelige inden for fjernsynsklassen.

offentlig klasse fjernsyn {privat dobbelt bredde privat dobbelt højde privat dobbelt Skærmstørrelse privat int maxVolumen print int volumen privat boolsk magt offentligt fjernsyn (dobbelt bredde, dobbelt højde, dobbelt skærmstørrelse) {dette.bredde dette.højde this.screenSize = ScreenSize} offentlig dobbeltkanaltuning (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 fejl som variabel er privat og kan ikke tilgås uden for klassen}}

I ovenstående eksempel har jeg erklæret alle variabler som private og metoder, konstruktører og klasse som offentlige. Her kan konstruktører, metoder tilgås uden for klassen. Når jeg opretteret objektaf fjernsynsklassen, kan den få adgang til metoderne og konstruktørerne, der er til stede i klassen, mens variabler, der er erklæret med privat adgangsmodifikator, er skjult. Det er derfor, når du prøver at få adgang bredde variabel i ovenstående eksempel kaster deten fejl. Sådan skjules interne implementeringsoplysninger for de andre klasser. Sådan opnås indkapsling i Java.

Dette bringer os til slutningen af ​​denne artikel om 'indkapsling i Java'. Håber, du fandt det informativt, og det hjalp med at tilføje værdi til din viden. Hvis du ønsker at lære mere om Java, kan du henvise til

typer kommentarer i java

Nu hvor du har forstået “hvad er indkapsling i Java”, skal du tjekke af Edureka, et pålideligt online læringsfirma med et netværk på mere end 250.000 tilfredse elever spredt over hele kloden. Edurekas Java J2EE- og SOA-uddannelses- og certificeringskursus er designet til studerende og fagfolk, der ønsker at være Java-udvikler. Kurset er designet til at give dig et forspring i Java-programmering og træne dig til både kerne- og avancerede Java-koncepter sammen med forskellige Java-rammer som Hibernate & Spring.

Har du et spørgsmål til os? Nævn det i kommentarfeltet i denne 'indkapsling i Java' -blog, og vi vender tilbage til dig hurtigst muligt.