Inkapseling in Java - Hoe OOP's onder de knie te krijgen met Encapsulation?



Dit artikel over inkapseling in Java helpt u de kernconcepten van het verbergen van implementatiedetails te begrijpen, samen met verschillende eenvoudige voorbeelden.

Objectgeoriënteerd programmeren of beter bekend als OOP's is een van de belangrijkste pijlers van Java die zijn kracht en gebruiksgemak heeft benut. Om een ​​professionele Java-ontwikkelaar te worden, moet u een vlekkeloze controle krijgen over de verschillende Leuk vinden , Abstractie , Encapsulation en Polymorphism. Door middel van dit artikel zal ik je een volledig inzicht geven in een van de belangrijkste concepten van OOP's, namelijk inkapseling in Java en hoe dit wordt bereikt.

mijn sql-tutorials voor beginners

Hieronder staan ​​de onderwerpen die ik in dit artikel zal bespreken:



U kunt ook deze opname van waar u de onderwerpen op een gedetailleerde manier kunt begrijpen met voorbeelden.



Inleiding tot inkapseling

Inkapseling verwijst naar het verpakken van gegevens onder een enkele eenheid. Het is het mechanisme dat code en de gegevens die het manipuleert, bindt. Een andere manier om over inkapseling na te denken, is dat het een beschermend schild is dat voorkomt dat de gegevens worden benaderd door de code buiten dit schild. Hierin zijn de variabelen of gegevens van een is verborgen voor elke andere klasse en is alleen toegankelijk via elke lidfunctie van de eigen klasse waarin ze zijn gedeclareerd.

Laten we nu het voorbeeld nemen van een medische capsule, waarbij het medicijn altijd veilig in de capsule zit. Evenzo zijn door inkapseling de methoden en variabelen van een klasse goed verborgen en veilig.



Inkapseling - Inkapseling in Java-EdurekaInkapseling in Java kan worden bereikt door:

  • De variabelen van een klasse als privé declareren.
  • Het verstrekken van openbare setter- en getter-methoden om de variabelenwaarden te wijzigen en te bekijken.

Laten we nu eens kijken naar de code om een ​​beter begrip van inkapseling te krijgen:

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 = nieuwe student () s.setName ('Harry Potter') System.out.println (s.getName ())}}

Zoals je in de bovenstaande code kunt zien, heb ik een klasstudent gemaakt met een privé naam . Vervolgens heb ik een getter en setter gemaakt om de naam van een student te krijgen en in te stellen. Met behulp van deze methoden moet elke klasse die toegang wil krijgen tot de naamvariabele dit doen met behulp van deze getter- en setter-methoden.

hoe de scannerklasse in java te gebruiken

Laten we nu nog een voorbeeld bekijken en inkapseling grondig begrijpen. In dit voorbeeld heeft de klasse Car twee velden: naam en topSpeed. Hier worden beide als privé gedeclareerd, wat betekent dat ze niet rechtstreeks buiten de klas kunnen worden geopend. We hebben een aantal getter- en setter-methoden zoals getName, setName, setTopSpeed ​​enz., En deze worden als openbaar verklaard. Deze methoden zijn blootgesteld aan 'buitenstaanders' en kunnen worden gebruikt om gegevens te wijzigen en op te halen uit het auto-object. We hebben één methode om de topsnelheid van het voertuig in te stellen en twee gettermethoden om de maximale snelheidswaarde op te halen in MPH of KMHt. Dus eigenlijk is dit wat inkapseling doet - het verbergt de implementatie en geeft ons de waarden die we willen. Laten we nu eens kijken naar de onderstaande code.

pakket Edureka public class Car {private String naam private double topSpeed ​​public Car () {} public String getName () {return name} public void setName (String name) {this.name = name} public void setTopSpeed ​​(dubbele snelheidMPH) {topSpeed = speedMPH} openbare dubbele getTopSpeedMPH () {return topSpeed} openbare dubbele getTopSpeedKMH () {terug topSpeed ​​* 1.609344}}

Hier maakt het hoofdprogramma een Car-object met een bepaalde naam en gebruikt het de setter-methode om de topsnelheid voor deze instantie op te slaan. Door dit te doen, kunnen we de snelheid gemakkelijk in MPH of KMH krijgen zonder ons zorgen te maken over hoe snelheid wordt omgezet in de autoklasse.

pakket Edureka public class Voorbeeld {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 () + 'topsnelheid in MPH is' + car.getTopSpeedMPH ()) System.out.println (car.getName () + 'topsnelheid in KMH is' + car.getTopSpeedKMH ())

So, dit is hoe inkapseling kan worden bereikt in Java. Laten we nu verder gaan en kijken waarom we inkapseling nodig hebben.

Waarom hebben we inkapseling nodig in Java?

Inkapseling is essentieel in Java omdat:

  • Het bepaalt de manier waarop gegevens toegankelijk zijn
  • Wijzigt de code op basis van de vereisten
  • Helpt ons een los koppel te krijgen
  • Bereikt eenvoud van onze applicatie
  • Het stelt u ook in staat om het deel van de code te wijzigen zonder andere functies of code in het programma te verstoren

Laten we nu eens kijken naar een klein voorbeeld dat de noodzaak van inkapseling illustreert.

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

In het bovenstaande voorbeeld bevat het twee instantievariabelen als toegangsmodificator. Dus elke klasse binnen hetzelfde pakket kan waarden van die variabelen toewijzen en wijzigen door een object van die klasse te maken. We hebben dus geen controle over de waarden die in de klas Student als variabelen zijn opgeslagen. Om dit probleem op te lossen, kapselen we de klas Student in.

Dit waren dus de weinige aanwijzingen die de noodzaak van inkapseling weergeven. Laten we nu eens kijken naar enkele voordelen van inkapseling.

Voordelen van inkapseling

    • Gegevens verbergen: Hier heeft een gebruiker geen idee van de innerlijke implementatie van de klasse. Zelfs de gebruiker zal niet weten hoe de klasse waarden opslaat in de variabelen. Hij / zij zal zich er alleen van bewust zijn dat we de waarden doorgeven aan een setter-methode en dat variabelen worden geïnitialiseerd met die waarde.
    • Verhoogde flexibiliteit: Hier kunnen we de variabelen van de klasse als alleen-lezen of alleen-schrijven maken, afhankelijk van onze vereisten. Als u de variabelen alleen-lezen wilt maken, moeten we de setter-methoden zoals setName (),setAge() etc. of als we de variabelen als alleen-schrijven willen maken, dan moeten we de get methoden zoals getName (), getAge () etc. uit het bovenstaande programma weglaten.
    • Herbruikbaarheid: Het verbetert ook de herbruikbaarheid en is gemakkelijk aan te passen aan nieuwe vereisten.

Nu we de grondbeginselen van inkapseling hebben begrepen, gaan we dieper ingaan op het laatste onderwerp van dit artikel en ingekapseld worden in detail met behulp van een real-time voorbeeld.

hoe mysql-database in java te verbinden

Een real-time voorbeeld van inkapseling

Laten we eens kijken naar een televisievoorbeeld en begrijpen hoe interne implementatiedetails verborgen zijn voor buiten de klas.In dit voorbeeld verbergen we in feite innerlijke codegegevens, d.w.z. circuits van de externe wereld, door de omslag. Nu in , kan dit worden bereikt met behulp van toegangsmodificatoren. Toegangsmodificatoren stellen de toegang of het niveau van een klasse, constructeursvariabelen enz. In. Zoals je kunt zien in de onderstaande code, heb ik een privétoegangsmodificator gebruikt om het toegangsniveau van de klasse te beperken. Variabelen die als privé zijn gedeclareerd, zijn alleen toegankelijk binnen de televisieklasse.

openbare klasse Televisie {privé dubbele breedte privé dubbele hoogte privé dubbel Schermgrootte privé int maxVolume print int volume privé booleaans vermogen openbare televisie (dubbele breedte, dubbele hoogte, dubbele schermgrootte) {this.width this.height this.screenSize = ScreenSize} publiek dubbel kanaalTuning (int kanaal) {switch (kanaal) {case1: return 34.56 case2: return 54.89 case3: return 73.89 case1: return 94.98} retour 0} public int afnameVolume () {if (0volume) volume ++ retour volume}} class test {public static void main (String args []) {Televisie t = nieuwe televisie (11.5,7,9) t.powerSwitch () t.channelTuning (2) t.decreaseVolume () t.increaseVolume () televisie. // Gooit een fout omdat de variabele privé is en niet toegankelijk is buiten de klasse}}

In het bovenstaande voorbeeld heb ik alle variabelen als privé verklaard en methoden, constructors en klasse als openbaar. Hier kunnen constructeurs methoden worden benaderd buiten de klas. Wanneer ik creëereen voorwerpvan de televisieklasse heeft het toegang tot de methoden en constructors die aanwezig zijn in de klasse, terwijl variabelen die zijn gedeclareerd met de privétoegangsmodificator verborgen zijn. Dat is waarom wanneer u probeert toegang te krijgen tot breedte variabel in het bovenstaande voorbeeld gooit heteen fout. Dat is hoe interne implementatiedetails worden verborgen voor de andere klassen. Dit is hoe inkapseling wordt bereikt in Java.

Dit brengt ons bij het einde van dit artikel over 'Encapsulation in Java'. Hoop, je vond het informatief en het hielp bij het toevoegen van waarde aan je kennis. Als u meer over Java wilt weten, kunt u het

Nu je hebt begrepen 'wat is encapsulation in Java', kun je het door Edureka, een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden leerlingen verspreid over de hele wereld. De training- en certificeringcursus Java J2EE en SOA van Edureka is bedoeld voor studenten en professionals die Java-ontwikkelaar willen worden. De cursus is bedoeld om u een voorsprong te geven in het programmeren van Java en u te trainen in zowel de kern als geavanceerde Java-concepten, samen met verschillende Java-frameworks zoals Hibernate & Spring.

Heeft u een vraag voor ons? Vermeld het in het commentaargedeelte van deze 'Encapsulation in Java' -blog en we nemen zo snel mogelijk contact met u op.