„Encapsulation in Java“ - Kaip įsisavinti OOP naudojant „Encapsulation“?



Šis straipsnis apie „Encapsulation in Java“ padės jums suprasti pagrindines įgyvendinimo informacijos slėpimo sąvokas ir įvairius paprastus pavyzdžius.

Į objektą orientuotas programavimas arba geriau žinomas kaip OOP yra vienas iš pagrindinių „Java“ ramsčių, kuris panaudojo savo galią ir paprastą naudojimą. Norėdami tapti profesionaliu „Java“ kūrėju, turite nepriekaištingai valdyti įvairius Kaip , Abstrakcija , Inkapsuliacija ir polimorfizmas. Šio straipsnio laikmenoje aš jums suteiksiu išsamų supratimą apie vieną iš svarbiausių OOP sąvokų, t.

Toliau pateikiamos temos, kurias aptarsiu šiame straipsnyje:



Taip pat galite peržiūrėti šį įrašą kur galite išsamiai suprasti temas su pavyzdžiais.



Įvadas į inkapsuliaciją

Kapsuliavimas reiškia duomenų suvyniojimą į vieną vienetą. Tai yra mechanizmas, kuris suriša kodą ir duomenis, kuriais jis manipuliuoja. Kitas būdas pagalvoti apie inkapsuliavimą yra tai, kad apsauginis skydas apsaugo nuo duomenų prieigos prie kodo, esančio už šio skydo. Tai kintamieji arba duomenys a yra paslėptas nuo bet kurios kitos klasės ir prie jo galima prisijungti tik naudojant bet kurią savo klasės, kurioje jie yra deklaruoti, nario funkciją.

Paimkime medicininės kapsulės pavyzdį, kai vaistas kapsulės viduje visada yra saugus. Panašiai, naudojant kapsulę, klasės metodai ir kintamieji yra gerai paslėpti ir saugūs.



Inkapsuliacija -Kapsuliavimas „Java-Edureka“Kapsuliavimas į „Java“ gali būti pasiektas:

  • Klasės kintamųjų paskelbimas privačiais.
  • Pateikti viešuosius seterio ir „getter“ metodus kintamųjų reikšmėms modifikuoti ir peržiūrėti.

Dabar pažvelkime į kodą, kad geriau suprastume kapsuliavimą:

kaip konvertuoti eilutę į datą
viešoji klasė Studentas {private eilutės pavadinimas public String getName () {return name} public void setName (String name) {this.name = name}} klasės testas {public static void main (String [] argumentai) {Student s = naujas studentas () s.setName ('Haris Poteris') System.out.println (s.getName ())}}

Kaip matote aukščiau pateiktame kode, aš sukūriau mokinį, kuris turi privatųjį vardas . Tada aš sukūriau „Getter and Setter“, norėdamas gauti ir nustatyti studento vardą. Šių metodų pagalba bet kuri klasė, norinti pasiekti vardo kintamąjį, turi tai padaryti naudodama šiuos „getter“ ir „setter“ metodus.

Pažiūrėkime dar vieną pavyzdį ir nuodugniai supraskime „Encapsulation“. Šiame pavyzdyje automobilio klasėje yra du laukai –pavadinimas ir „topSpeed“. Čia abu yra paskelbti privačiais, tai reiškia, kad su jais negalima tiesiogiai susisiekti už klasės ribų. Mes turime keletą „getter“ ir „seter“ metodų, tokių kaip „getName“, „setName“, „setTopSpeed“ ir kt., Ir jie skelbiami kaip vieši. Šie metodai yra veikiami „pašalinių asmenų“ ir gali būti naudojami norint pakeisti ir gauti duomenis iš automobilio objekto. Mes turime vieną būdą nustatyti didžiausią transporto priemonės greitį ir du geresnius metodus, kad gautume maksimalią greičio vertę MPH arba KMHt. Taigi iš esmės tai daro kapsuliavimas - jis slepia įgyvendinimą ir suteikia mums norimas vertybes. Dabar pažvelkime į žemiau pateiktą kodą.

paketas „Edureka“ viešosios klasės automobilis {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} public double getTopSpeedMPH () {return topSpeed} public double getTopSpeedKMH () {return topSpeed ​​* 1.609344}}

Čia pagrindinė programa sukuria automobilio objektą su nurodytu vardu ir naudoja setter metodą, kad išsaugotų didžiausią greitį šiam egzemplioriui. Tai padarę, mes galime lengvai gauti greitį MPH arba KMH, nesirūpindami, kaip paverčiamas greitis automobilių klasėje.

paketas „Edureka“ viešoji klasė Pavyzdys {public static void main (String args []) Automobilio automobilis = new Car () car.setName ('Mustang GT 4.8-litro V8') car.setTopSpeed ​​(201) System.out.println (automobilis. „getName“ () + „didžiausias greitis MPH yra„ + car.getTopSpeedMPH ()] System.out.println (car.getName () + “didžiausias greitis KMH yra„ + car.getTopSpeedKMH ()]

So šitaip galima pasiekti „Java“ kodavimą. Dabar eikime toliau ir pažiūrėkime, kodėl mums reikia kapsuliavimo.

Kodėl mums reikalinga „Java“ inkapsuliacija?

Kapsuliavimas yra būtinas „Java“, nes:

  • Jis kontroliuoja duomenų prieinamumo būdą
  • Pakeičia kodą pagal rekvizitus
  • Padeda mums pasiekti laisvą porą
  • Pasiekia mūsų taikymo paprastumą
  • Tai taip pat leidžia pakeisti kodo dalį, nenutraukiant jokių kitų programoje esančių funkcijų ar kodo

Dabar apsvarstykime mažą pavyzdį, kuris iliustruoja kapsuliavimo poreikį.

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

Ankstesniame pavyzdyje joje yra du egzempliorių kintamieji kaip prieigos modifikatorius. Taigi bet kuri to paties paketo klasė gali priskirti ir pakeisti tų kintamųjų reikšmes, sukurdama tos klasės objektą. Taigi mes nekontroliuojame studentų klasėje saugomų reikšmių kaip kintamųjų. Norėdami išspręsti šią problemą, mes apjungiame Studentų klasę.

Taigi, tai buvo nedaugelis patarimų, vaizduojančių kapsuliavimo poreikį. Pažiūrėkime, kokie yra kapsuliavimo pranašumai.

Kapsuliavimo nauda

    • Duomenų slėpimas: Čia vartotojas neturės supratimo apie vidinį klasės įgyvendinimą. Net vartotojas nežinos, kaip klasė saugo reikšmes kintamuosiuose. Jis / ji žinos tik tai, kad mes perduodame reikšmes seterio metodui ir kintamieji pradedami naudoti su šia verte.
    • Padidėjęs lankstumas: Čia mes galime padaryti klasės kintamuosius tik skaityti arba tik rašyti, atsižvelgiant į mūsų reikalavimus. Jei norite, kad kintamieji būtų tik skaitomi, turime praleisti seterio metodus, pvz., SetName (),setAge() ir pan., arba jei norime, kad kintamieji būtų tik rašomieji, iš pirmiau minėtos programos turime praleisti „get“ metodus, tokius kaip „getName“ (), „getAge“ () ir kt.
    • Pakartotinis naudojimas: Tai taip pat pagerina pakartotinį naudojimą ir jį lengva pakeisti pagal naujus reikalavimus.

Dabar, kai supratome inkapsuliacijos pagrindus, pasinerkime į paskutinę šio straipsnio temą ir išsamiai supraskime „Encapsulation“, naudodamiesi realaus laiko pavyzdžiu.

Realaus laiko inkapsuliacijos pavyzdys

Panagrinėkime televizijos pavyzdį ir supraskime, kaip vidinės įgyvendinimo detalės slepiamos nuo išorinės klasės.Iš esmės šiame pavyzdyje mes dangčiu slepiame vidinius kodo duomenis, t. Y. Grandines iš išorinio pasaulio. Dabar , tai galima pasiekti naudojant prieigos modifikatorius. Prieigos modifikatoriai nustato klasės prieigą ar lygį, konstruktorių kintamuosius ir kt. Kaip matote žemiau pateiktame kode, aš naudoju privačios prieigos modifikatorių, norėdamas apriboti klasės prieigos lygį. Kintamieji, paskelbti privačiais, yra prieinami tik televizijos klasėje.

viešoji klasė Televizija {privatus dvigubo pločio privatus dvigubo aukščio privatus dvigubas ekrano dydis privatus int maks. tūrio spausdinimo vid. tūris privati ​​loginės galios viešoji televizija (dvigubo pločio, dvigubo aukščio, dvigubo ekrano dydžio) {this.width this.height this.screenSize = ScreenSize} public double channelTuning (int channel) {switch (channel) {case1: return 34.56 case2: return 54.89 case3: return 73.89 case1: return 94.98} return 0} public int sumažėjimasVolume () {if (0volume) volume ++ return volume}} klasės testas {public static void main (String args []) {Television t = new Television (11.5,7,9) t.powerSwitch () t.channelTuning (2) t.decreaseVolume () t.increaseVolume () television. // Klaidos klaida, nes kintamasis yra privatus ir jo negalima pasiekti už klasės ribų}}

Pirmiau pateiktame pavyzdyje aš paskelbiau visus kintamuosius kaip privačius, o metodus, konstruktorius ir klasę - kaip viešuosius. Čia prie konstruktorių, metodų galima susipažinti už klasės ribų. Kai kuriudaiktastelevizijos klasės, ji gali pasiekti klasėje esančius metodus ir konstruktorius, o kintamieji, deklaruoti naudojant privačios prieigos modifikatorių, yra paslėpti. Štai kodėl bandote prieiti pločio kintamasis aukščiau pateiktame pavyzdyje jis metaklaida. Taip vidinės įgyvendinimo detalės slepiamos nuo kitų klasių. Taip „Java“ pasiekiama inkapsuliacija.

Tai leidžia mums baigti šį straipsnį „Encapsulation in Java“. Tikiuosi, kad jums tai pasirodė informatyvu ir tai padėjo padidinti jūsų žinių vertę. Jei norite sužinoti daugiau apie „Java“, galite kreiptis į

Dabar, kai supratote „kas yra„ Java “įterpimas“, patikrinkite sukūrė patikima internetinė mokymosi įmonė „Edureka“, turinti daugiau nei 250 000 patenkintų besimokančiųjų tinklą visame pasaulyje. „Edureka“ „Java J2EE“ ir SOA mokymo ir sertifikavimo kursai yra skirti studentams ir specialistams, norintiems būti „Java“ kūrėjais. Kursas sukurtas tam, kad galėtumėte pradėti žvalgytis į „Java“ programavimą ir išmokyti pagrindines ir pažangesnes „Java“ koncepcijas kartu su įvairiomis „Java“ sistemomis, tokiomis kaip „Hibernate & Spring“.

Turite mums klausimą? Prašau tai paminėti šio tinklaraščio „Encapsulation in Java“ komentarų skyriuje, ir mes kuo greičiau susisieksime su jumis.