Inkapsling i Java - Hur man behärskar OOP med inkapsling?

Den här artikeln om inkapsling i Java hjälper dig att förstå kärnkoncepten för att dölja implementeringsdetaljer tillsammans med olika enkla exempel.

Objektorienterad programmering eller bättre känd som OOP är en av de största pelarna i Java som har utnyttjat sin kraft och användarvänlighet. För att bli en professionell Java-utvecklare måste du få en felfri kontroll över de olika tycka om , Abstraktion , Inkapsling och polymorfism. Genom den här artikeln kommer jag att ge dig en fullständig inblick i ett av de viktigaste begreppen för OOP, dvs. inkapsling i Java och hur det uppnås.

Nedan följer ämnen som jag kommer att diskutera i den här artikeln:



skillnaden mellan överbelastning och åsidosättande i Java

Du kan också gå igenom denna inspelning av där du kan förstå ämnena på ett detaljerat sätt med exempel.

Introduktion till inkapsling

Inkapsling avser att slå in data under en enda enhet. Det är mekanismen som binder kod och de data den manipulerar. Ett annat sätt att tänka på inkapsling är att det är en skyddande sköld som förhindrar att data nås av koden utanför denna sköld. I detta är variablerna eller data för a är dold från alla andra klasser och kan endast nås via alla medlemsfunktioner i sin egen klass där de deklareras.

Låt oss nu ta exemplet på en medicinsk kapsel, där läkemedlet alltid är säkert inuti kapseln. På samma sätt, genom inkapsling, är metoderna och variablerna i en klass dolda och säkra.

Inkapsling - Inkapsling i Java-EdurekaInkapsling i Java kan uppnås genom att:

  • Förklarar variablerna för en klass som privata.
  • Tillhandahålla offentliga setter- och gettermetoder för att modifiera och visa variabelvärdena.

Låt oss nu titta på koden för att få en bättre förståelse för inkapsling:

public class Student {private String name public String getName () {return name} public void setName (String name) {this.name = name}} class Test {public static void main (String [] args) {Student s = new Student () s.setName ('Harry Potter') System.out.println (s.getName ())}}

Som du kan se i ovanstående kod har jag skapat en klassstudent som har en privat namn . Därefter har jag skapat en getter och setter för att få och ställa in namnet på en student. Med hjälp av dessa metoder måste varje klass som vill komma åt namnvariabeln göra det med dessa getter- och settermetoder.

Låt oss nu se ytterligare ett exempel och förstå inkapsling på djupet. I det här exemplet har bilklassen två fält –name och topSpeed. Här deklareras båda som privata, vilket innebär att de inte kan nås direkt utanför klassen. Vi har några getter- och settermetoder som getName, setName, setTopSpeed ​​etc., och de förklaras som offentliga. Dessa metoder utsätts för ”outsiders” och kan användas för att ändra och hämta data från bilobjektet. Vi har en metod för att ställa in fordonets topphastighet och två gettermetoder för att hämta maxhastighetsvärdet antingen i MPH eller KMHt. Så i grund och botten är detta vad inkapsling gör - det döljer implementeringen och ger oss de värden vi vill ha. Nu ska vi titta på koden nedan.

paket 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 dubbel getTopSpeedMPH () {return topSpeed} offentlig dubbel getTopSpeedKMH () {retur topSpeed ​​* 1.609344}}

Här skapar huvudprogrammet ett bilobjekt med ett givet namn och använder settermetoden för att lagra topphastigheten för denna instans. Genom att göra detta kan vi enkelt få hastigheten i MPH eller KMH utan att bry oss om hur hastighet omvandlas i bilklassen.

paket Edureka public class Exempel {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 är' + car.getTopSpeedMPH ()) System.out.println (car.getName () + 'topphastighet i KMH är' + car.getTopSpeedKMH ())

So, detta är hur inkapsling kan uppnås i Java. Nu ska vi gå vidare och se varför behöver vi inkapsling.

Varför behöver vi inkapsling i Java?

Inkapsling är viktigt i Java eftersom:

  • Det styr vägen för datatillgänglighet
  • Modifierar koden baserat på kraven
  • Hjälper oss att uppnå ett löst par
  • Uppnår enkelheten i vår applikation
  • Det låter dig också ändra den del av koden utan att störa andra funktioner eller koder som finns i programmet

Låt oss nu överväga ett litet exempel som illustrerar behovet av inkapsling.

klass 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 exemplet ovan innehåller den två instansvariabler som åtkomstmodifierare. Så varje klass inom samma paket kan tilldela och ändra värdena för dessa variabler genom att skapa ett objekt av den klassen. Vi har alltså inte kontroll över värdena som lagras i studentklassen som variabler. För att lösa problemet inkapslar vi studentklassen.

Så det här var några få pekare som visar behovet av inkapsling. Låt oss nu se några fördelar med inkapsling.

Fördelar med inkapsling

    • Datadöljande: Här har en användare ingen aning om den inre implementeringen av klassen. Även användare kommer inte att vara medveten om hur klassen lagrar värden i variablerna. Han / hon kommer bara att vara medveten om att vi överför värdena till en settermetod och variabler initialiseras med det värdet.
    • Ökad flexibilitet: Här kan vi göra variablerna i klassen skrivskyddade eller skrivskyddade beroende på vårt krav. Om du vill göra variablerna skrivskyddade måste vi utelämna settermetoderna som setName (),setAge() etc. eller om vi vill göra variablerna skrivbara, måste vi utelämna get-metoderna som getName (), getAge () etc. från ovanstående program.
    • Återanvändbarhet: Det förbättrar också återanvändbarheten och är lätt att ändra med nya krav.

Nu när vi har förstått grunderna för inkapsling, låt oss dyka in i det sista ämnet i den här artikeln och förstå Encapsulation i detalj med hjälp av ett realtidsexempel.

omvänd av ett nummer i Java

Ett realtidsexempel på inkapsling

Låt oss överväga ett TV-exempel och förstå hur interna implementeringsdetaljer döljs för externa klasser.I det här exemplet gömmer vi inre koddata, dvs. kretsar från den yttre världen av omslaget. Nu inne , detta kan uppnås med hjälp av åtkomstmodifierare. Åtkomstmodifierare ställer in åtkomst eller nivå för en klass, konstruktörsvariabler etc. Som du kan se i koden nedan har jag använt privat åtkomstmodifierare för att begränsa klassens åtkomstnivå. Variabler som deklarerats som privata är endast tillgängliga inom TV-klass.

offentlig klass TV {privat dubbel bredd privat dubbel höjd privat dubbel Skärmstorlek privat int maxVolymutskrift int volym privat boolesk kraft offentlig TV (dubbel bredd, dubbel höjd, dubbel skärmstorlek) {detta.bredd detta.höjd this.screenSize = ScreenSize} offentlig dubbel kanalTuning (int channel) {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. // kastar fel som variabel är privat och kan inte nås utanför klassen}}

I exemplet ovan har jag förklarat alla variabler som privata och metoder, konstruktörer och klass som offentliga. Här kan konstruktörer, metoder nås utanför klassen. När jag skaparett objektav TV-klassen kan den komma åt metoderna och konstruktörerna i klassen, medan variabler som deklarerats med privat åtkomstmodifierare är dolda. Det är därför när du försöker komma åt breddvariabel i exemplet ovan kastar detett fel. Således döljs interna implementeringsdetaljer från de andra klasserna. Så här uppnås inkapsling i Java.

Detta leder oss till slutet av den här artikeln om 'Encapsulation in Java'. Hoppas, du tyckte att det var informativt och det hjälpte till att tillföra värde till din kunskap. Om du vill lära dig mer om Java kan du hänvisa till

Nu när du har förstått 'vad är inkapsling i Java', kolla in av Edureka, ett pålitligt inlärningsföretag online med ett nätverk av mer än 250 000 nöjda elever spridda över hela världen. Edurekas Java J2EE- och SOA-utbildning och certifieringskurs är utformad för studenter och yrkesverksamma som vill vara Java-utvecklare. Kursen är utformad för att ge dig ett försprång till Java-programmering och träna dig för både kärn- och avancerade Java-koncept tillsammans med olika Java-ramverk som Hibernate & Spring.

Har du en fråga till oss? Vänligen nämna det i kommentarsektionen i denna 'Encapsulation in Java' -blogg så återkommer vi till dig så snart som möjligt.