Zapouzdření v Java
V čem je Encapsulation in Java?
Zapouzdření v Java je mechanismus, který spojuje proměnné (data) a metody (kód) do jedné jednotky. Je to proces skrývání podrobností informací a ochrana dat a chování objektu. Je to jeden ze čtyř důležitých konceptů OOP. Třída encapsulate se snadno testuje, takže je také lepší pro testování jednotek.
klikněte zde pokud video není přístupné
Naučte se zapouzdření v Java s příkladem
Chcete-li podrobně porozumět tomu, co je zapouzdření, zvažte následující třídu bankovních účtů s vkladem a ukažte způsoby zůstatku
class Account { private int account_number; private int account_balance; public void show Data() { //code to show data } public void deposit(int a) { if (a < 0) { //show error } else account_balance = account_balance + a; } }
Předpokládejme, že se hackerovi podařilo získat přístup ke kódu vašeho bankovního účtu. Nyní se snaží vložit částku -100 na váš účet dvěma způsoby. Podívejte se na jeho první metodu nebo přístup.
Přístup 1: Pokusí se vložit neplatnou částku (řekněme -100) na váš bankovní účet manipulací s kódem.
Teď je otázka – Je to možné? Nechte prozkoumat. Obvykle jsou proměnné ve třídě nastaveny jako „soukromé“, jak je uvedeno níže. Lze k němu přistupovat pouze pomocí metod definovaných ve třídě. Žádná jiná třída nebo objekt k nim nemá přístup.
Pokud je datový člen soukromý, znamená to, že k němu lze přistupovat pouze v rámci stejné třídy. Žádná vnější třída nemá přístup k soukromému datovému členu nebo proměnné jiné třídy. V našem případě tedy hacker nemůže na váš účet vložit částku -100.
Přístup 2: První přístup hackera se nepodařilo uložit částku. Dále se pokusí vložit částku -100 pomocí metody „vklad“.
Ale implementace metody má kontrolu na záporné hodnoty. Takže druhý přístup také selhává.
Svá data tedy nikdy nevystavujete externí straně. Díky tomu je vaše aplikace bezpečná.
Celý kód lze považovat za kapsli a komunikovat můžete pouze prostřednictvím zpráv. Odtud název enkapsulace.
Data se skrývají Java
Data se skrývají Java skrývá proměnné třídy před ostatními třídami. Lze k němu přistupovat pouze prostřednictvím metody jejich aktuální třídy. Skrývá detaily implementace před uživateli. Ale více než skrývání dat je určeno pro lepší správu nebo seskupování souvisejících dat. Pro dosažení menšího stupně zapouzdření v Java, můžete použít modifikátory jako „protected“ nebo „public“. Díky zapouzdření mohou vývojáři snadno změnit jednu část kódu, aniž by to ovlivnilo ostatní.
Getter a Setter dovnitř Java
Getter a Setter dovnitř Java jsou dvě konvenční metody používané k načítání a aktualizaci hodnot proměnné. Používají se hlavně k vytváření, úpravě, mazání a prohlížení hodnot proměnných. Metoda setter se používá pro aktualizaci hodnot a metoda getter se používá pro čtení nebo načítání hodnot. Jsou také známí jako přistupující a mutátoři.
Následující kód je příkladem metod getter a setter:
class Account{ private int account_number; private int account_balance; // getter method public int getBalance() { return this.account_balance; } // setter method public void setNumber(int num) { this.account_number = num; } }
Ve výše uvedeném příkladu je metoda getBalance() metoda getter, která čte hodnotu proměnné account_balance a metoda setNumber() je metoda setter, která nastavuje nebo aktualizuje hodnotu proměnné account_number.
Abstrakce vs. zapouzdření
Zapouzdření je často špatně chápáno Abstrakce. Pojďme se učit-
- Zapouzdření je spíše o tom, „jak“ dosáhnout funkčnosti
- Abstrakce je spíše o tom, „co“ třída dokáže.
Jednoduchým příkladem pro pochopení tohoto rozdílu je mobilní telefon. Kde je složitá logika na desce plošných spojů zapouzdřena v dotykové obrazovce a rozhraní je k dispozici pro její odstranění.
Výhody zapouzdření v Java
- Zapouzdření je spojení dat s jejich souvisejícími funkcemi. Zde funkce znamenají „metody“ a data „proměnné“
- Udržujeme tedy proměnné a metody na jednom místě. To místo je „třída“. Třída je základem pro zapouzdření.
- S Java Zapouzdřením můžete ve svém kódu skrýt (omezit přístup) ke kritickým datovým členům, což zlepšuje zabezpečení
- Jak jsme diskutovali dříve, pokud je datový člen deklarován jako „soukromý“, lze k němu přistupovat pouze v rámci stejné třídy. Žádná externí třída nemůže přistupovat k datovému členu (proměnné) jiné třídy.
- Pokud však potřebujete k těmto proměnným přistupovat, musíte použít veřejný „getter“ a „setter“ metody.