„Java“ inkapsuliavimas yra pagrindinė objektinio programavimo (OOP) koncepcija, kuri reiškia duomenų ir metodų, veikiančių tuos duomenis, sujungimą viename vienete, kuris Java vadinamas klase. „Java“ inkapsuliacija yra būdas paslėpti klasės įgyvendinimo detales nuo išorinės prieigos ir atskleisti tik viešąją sąsają, kurią galima naudoti sąveikai su klase.
Java programoje inkapsuliavimas pasiekiamas paskelbus klasės egzempliorių kintamuosius privačiais, o tai reiškia, kad juos galima pasiekti tik klasėje. Kad pašaliniai galėtų pasiekti egzempliorių kintamuosius, apibrėžiami viešieji metodai, vadinami geter ir setters, kurie naudojami atitinkamai gauti ir modifikuoti egzempliorių kintamųjų reikšmes. Naudodama geterius ir nustatytojus, klasė gali vykdyti savo duomenų patvirtinimo taisykles ir užtikrinti, kad jos vidinė būsena išliktų nuosekli.

interneto trūkumai
Java Encapsulation diegimas
Žemiau pateikiamas Java Encapsulation pavyzdys:
Java
// Java Program to demonstrate> // Java Encapsulation> // Person Class> class> Person {> >// Encapsulating the name and age> >// only approachable and used using> >// methods defined> >private> String name;> >private> int> age;> >public> String getName() {>return> name; }> >public> void> setName(String name) {>this>.name = name; }> >public> int> getAge() {>return> age; }> >public> void> setAge(>int> age) {>this>.age = age; }> }> // Driver Class> public> class> Main {> >// main function> >public> static> void> main(String[] args)> >{> >// person object created> >Person person =>new> Person();> >person.setName(>'John'>);> >person.setAge(>30>);> >// Using methods to get the values from the> >// variables> >System.out.println(>'Name: '> + person.getName());> >System.out.println(>'Age: '> + person.getAge());> >}> }> |
>
>Išvestis
Name: John Age: 30>
Inkapsuliavimas apibrėžiamas kaip duomenų sujungimas į vieną vienetą. Tai mechanizmas, kuris sujungia kodą ir duomenis, kuriais jis manipuliuoja. Kitas būdas galvoti apie inkapsuliavimą yra tai, kad tai yra apsauginis skydas, kuris neleidžia pasiekti duomenų kodui už šio skydo ribų.
- Techniškai inkapsuliuojant klasės kintamieji arba duomenys yra paslėpti nuo bet kurios kitos klasės ir gali būti pasiekiami tik per bet kurią savo klasės nario funkciją, kurioje jie yra deklaruoti.
- Kaip ir inkapsuliuojant, klasėje esantys duomenys yra paslėpti nuo kitų klasių, naudojant duomenų slėpimo koncepciją, kuri pasiekiama padarius klasės narius ar metodus privačius, o klasė rodoma galutiniam vartotojui ar pasauliui, nepateikiant jokios informacijos. už įgyvendinimą naudojant abstrakcijos koncepciją, todėl jis taip pat žinomas kaip a duomenų slėpimo ir abstrakcijos derinys .
- Inkapsuliavimą galima pasiekti deklaruojant visus klasės kintamuosius kaip privačius ir klasėje įrašant viešuosius metodus, kad būtų galima nustatyti ir gauti kintamųjų reikšmes.
- Jis labiau apibrėžiamas naudojant seterio ir geterio metodą.
Inkapsuliavimo privalumai
- Duomenų slėpimas: tai būdas apriboti mūsų duomenų narių prieigą paslepiant įgyvendinimo detales. Inkapsuliavimas taip pat suteikia duomenų slėpimo būdą. Vartotojas neturės supratimo apie vidinį klasės įgyvendinimą. Vartotojas negalės matyti, kaip klasė saugo kintamųjų reikšmes. Vartotojas žinos tik tai, kad mes perduodame reikšmes nustatymo metodui, o kintamieji inicijuojami su ta reikšme.
- Padidėjęs lankstumas: Priklausomai nuo mūsų reikalavimų, klasės kintamuosius galime padaryti tik skaitomus arba tik rašomus. Jei norime, kad kintamieji būtų tik skaitomi, turime praleisti nustatymo metodus, pvz., setName(), setAge() ir tt iš aukščiau pateiktos programos arba, jei norime, kad kintamieji būtų tik rašomi, turime praleisti gaukite tokius metodus kaip getName(), getAge() ir tt iš aukščiau pateiktos programos
- Pakartotinis naudojimas: Inkapsuliavimas taip pat pagerina pakartotinį naudojimą ir yra lengvai keičiamas atsižvelgiant į naujus reikalavimus.
- Testuoti kodą lengva: Inkapsuliuotą kodą lengva išbandyti vieneto testavimui.
- Laisvė programuotojui diegiant sistemos detales: Tai yra vienas iš pagrindinių inkapsuliavimo privalumų, kad programuotojui suteikiama laisvė diegti sistemos detales. Vienintelis programuotojo apribojimas yra išlaikyti abstrakčią sąsają, kurią mato pašaliniai asmenys.
Pavyzdžiui: Teksto rengyklės GUI redagavimo meniu kodo programuotojas iš pradžių gali atlikti iškirpimo ir įklijavimo operacijas nukopijuodamas faktinius ekrano vaizdus į išorinį buferį ir iš jo. Vėliau jis gali būti nepatenkintas šiuo įgyvendinimu, nes neleidžia kompaktiškai saugoti pasirinkimo, neišskiria tekstinių ir grafinių objektų. Jei programuotojas sukūrė iškirpimo ir įklijavimo sąsają atsižvelgdamas į inkapsuliavimą, pagrindinio diegimo perjungimas į tokį, kuris saugo tekstą ir grafinius objektus tinkamu kompaktišku formatu, neturėtų sukelti problemų funkcijoms, kurioms reikia sąsajos su šia GUI. . Taigi inkapsuliavimas suteikia pritaikomumą, nes leidžia keisti programos dalių įgyvendinimo detales, nedarant neigiamo poveikio kitoms dalims.
python programavimo pavyzdžiai
Inkapsuliavimo Java trūkumai
- Gali padidėti sudėtingumas, ypač jei naudojamas netinkamai.
- Gali būti sunkiau suprasti, kaip sistema veikia.
- Gali apriboti įgyvendinimo lankstumą.
Pavyzdžiai, rodantys duomenų inkapuliaciją Java
1 pavyzdys:
Žemiau pateikiamas aukščiau pateiktos temos įgyvendinimas:
Java
// Java Program to demonstrate> // Java Encapsulation> // fields to calculate area> class> Area {> >int> length;> >int> breadth;> >// constructor to initialize values> >Area(>int> length,>int> breadth)> >{> >this>.length = length;> >this>.breadth = breadth;> >}> >// method to calculate area> >public> void> getArea()> >{> >int> area = length * breadth;> >System.out.println(>'Area: '> + area);> >}> }> class> Main {> >public> static> void> main(String[] args)> >{> >Area rectangle =>new> Area(>2>,>16>);> >rectangle.getArea();> >}> }> |
>
>Išvestis
Area: 32>
2 pavyzdys:
Programa, skirta pasiekti klasės EncapsulateDemo kintamuosius, parodyta žemiau:
Java
mysql visų vartotojų sąrašas
// Java program to demonstrate> // Java encapsulation> class> Encapsulate {> >// private variables declared> >// these can only be accessed by> >// public methods of class> >private> String geekName;> >private> int> geekRoll;> >private> int> geekAge;> >// get method for age to access> >// private variable geekAge> >public> int> getAge() {>return> geekAge; }> >// get method for name to access> >// private variable geekName> >public> String getName() {>return> geekName; }> >// get method for roll to access> >// private variable geekRoll> >public> int> getRoll() {>return> geekRoll; }> >// set method for age to access> >// private variable geekage> >public> void> setAge(>int> newAge) { geekAge = newAge; }> >// set method for name to access> >// private variable geekName> >public> void> setName(String newName)> >{> >geekName = newName;> >}> >// set method for roll to access> >// private variable geekRoll> >public> void> setRoll(>int> newRoll) { geekRoll = newRoll; }> }> public> class> TestEncapsulation {> >public> static> void> main(String[] args)> >{> >Encapsulate obj =>new> Encapsulate();> >// setting values of the variables> >obj.setName(>'Harsh'>);> >obj.setAge(>19>);> >obj.setRoll(>51>);> >// Displaying values of the variables> >System.out.println(>'Geek's name: '> + obj.getName());> >System.out.println(>'Geek's age: '> + obj.getAge());> >System.out.println(>'Geek's roll: '> + obj.getRoll());> >// Direct access of geekRoll is not possible> >// due to encapsulation> >// System.out.println('Geek's roll: ' +> >// obj.geekName);> >}> }> |
>
>Išvestis
Geek's name: Harsh Geek's age: 19 Geek's roll: 51>
3 pavyzdys:
Aukščiau pateiktoje programoje klasė Encapsulate yra inkapsuliuojama, nes kintamieji paskelbiami privačiais. Gauti metodai, tokie kaip getAge(), getName() ir getRoll() yra nustatyti kaip vieši, šie metodai naudojami norint pasiekti šiuos kintamuosius. Nustatymo metodai, tokie kaip setName(), setAge(), setRoll() taip pat deklaruojami kaip vieši ir naudojami kintamųjų reikšmėms nustatyti.
Žemiau pateikiamas apibrėžto pavyzdžio įgyvendinimas:
Java
// Java Program to demonstrate> // Java Encapsulation> class> Name {> >// Private is using to hide the data> >private> int> age;> >// getter> >public> int> getAge() {>return> age; }> >// setter> >public> void> setAge(>int> age) {>this>.age = age; }> }> // Driver Class> class> GFG {> >// main function> >public> static> void> main(String[] args)> >{> >Name n1 =>new> Name();> >n1.setAge(>19>);> >System.out.println(>'The age of the person is: '> >+ n1.getAge());> >}> }> |
>
>Išvestis
The age of the person is: 19>
4 pavyzdys:
Žemiau pateikiamas Java Encapsulation diegimas:
Java
// Java Program to demonstrate> // Java Encapsulation> class> Account {> >// private data members to hide the data> >private> long> acc_no;> >private> String name, email;> >private> float> amount;> >// public getter and setter methods> >public> long> getAcc_no() {>return> acc_no; }> >public> void> setAcc_no(>long> acc_no)> >{> >this>.acc_no = acc_no;> >}> >public> String getName() {>return> name; }> >public> void> setName(String name) {>this>.name = name; }> >public> String getEmail() {>return> email; }> >public> void> setEmail(String email)> >{> >this>.email = email;> >}> >public> float> getAmount() {>return> amount; }> >public> void> setAmount(>float> amount)> >{> >this>.amount = amount;> >}> }> // Driver Class> public> class> GFG {> >// main function> >public> static> void> main(String[] args)> >{> >// creating instance of Account class> >Account acc =>new> Account();> >// setting values through setter methods> >acc.setAcc_no(90482098491L);> >acc.setName(>'ABC'>);> >acc.setEmail(>'[email protected]'>);> >acc.setAmount(100000f);> >// getting values through getter methods> >System.out.println(> >acc.getAcc_no() +>' '> + acc.getName() +>' '> >+ acc.getEmail() +>' '> + acc.getAmount());> >}> }> |
romėniškas skaitmuo nuo 1 iki 100
>
>Išvestis
90482098491 ABC [email protected] 100000.0>