V tomto kurzu se dozvíte o zapouzdření a skrytí dat v Javě pomocí příkladů.
Zapouzdření Java
Zapouzdření je jednou z klíčových vlastností objektově orientovaného programování. Zapouzdření odkazuje na sdružování polí a metod uvnitř jedné třídy.
Zabraňuje vnějším třídám v přístupu a změně polí a metod třídy. To také pomáhá dosáhnout skrývání dat .
Příklad 1: Java Encapsulation
class Area ( // fields to calculate 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) ( // create object of Area // pass value of length and breadth Area rectangle = new Area(5, 6); rectangle.getArea(); ) )
Výstup
Plocha: 30
Ve výše uvedeném příkladu jsme vytvořili třídu s názvem Oblast. Hlavním účelem této třídy je vypočítat plochu.
Pro výpočet plochy, potřebujeme dvě proměnné: křížem krážem a metody: getArea()
. Proto jsme svázali tato pole a metody do jedné třídy.
Zde jsou pole a metody přístupné také z jiných tříd. Nejedná se tedy o skrytí dat .
Toto je pouze zapouzdření . Jen udržujeme podobné kódy pohromadě.
Poznámka : Lidé často považují zapouzdření za skrytí dat, ale není to tak úplně pravda.
Zapouzdření odkazuje na sdružování souvisejících polí a metod dohromady. To lze použít k dosažení skrytí dat. Zapouzdření samo o sobě není skrývání dat.
Proč zapouzdření?
- V Javě nám zapouzdření pomáhá udržovat související pole a metody pohromadě, díky čemuž je náš kód čistší a snadno čitelný.
- Pomáhá kontrolovat hodnoty našich datových polí. Například,
class Person ( private int age; public void setAge(int age) ( if (age>= 0) ( this.age = age; ) ) )
Zde vytváříme věkovou proměnnouprivate
a používáme logiku uvnitřsetAge()
metody. Věk nyní nemůže být záporný. - Metody getter a setter poskytují přístup pouze pro čtení nebo pro zápis k našim polím třídy. Například,
getName() // provides read-only access setName() // provides write-only access
- Pomáhá oddělit součásti systému. Například můžeme zapouzdřit kód do více svazků.
Tyto oddělené komponenty (svazek) lze vyvíjet, testovat a ladit nezávisle a souběžně. Jakékoli změny v konkrétní komponentě nemají žádný vliv na ostatní komponenty. - Skrývání dat můžeme dosáhnout také pomocí zapouzdření. Pokud ve výše uvedeném příkladu změníme proměnnou délky a šířky na soukromou, je přístup k těmto polím omezen.
A jsou skrytí před vnějšími třídami. Tomu se říká skrývání dat .
Skrývání dat
Skrývání dat je způsob, jak omezit přístup našich datových členů skrytím podrobností implementace. Zapouzdření také poskytuje způsob, jak skrýt data.
K dosažení skrytí dat můžeme použít modifikátory přístupu. Například,
Příklad 2: Skrytí dat pomocí soukromého specifikátoru
class Person ( // private field private int age; // getter method public int getAge() ( return age; ) // setter method public void setAge(int age) ( this.age = age; ) ) class Main ( public static void main(String() args) ( // create an object of Person Person p1 = new Person(); // change age using setter p1.setAge(24); // access age using getter System.out.println("My age is " + p1.getAge()); ) )
Výstup
Můj věk je 24
Ve výše uvedeném příkladu máme private
věk pole. Protože je private
, nelze k němu přistupovat zvenčí třídy.
Pro přístup k věku jsme použili public
metody: getAge()
a setAge()
. Tyto metody se nazývají metody getter a setter.
Nastavit věk jako soukromý nám umožnilo omezit neoprávněný přístup mimo třídu. Toto je skrývání dat .
Pokud se pokusíme o přístup k věkovému poli z hlavní třídy, zobrazí se chyba.
// error: age has private access in Person p1.age = 24;