Ebben az oktatóanyagban példák segítségével megismerheti a Java beágyazását és az adatok elrejtését.
Java beágyazás
A beágyazás az objektum-orientált programozás egyik legfontosabb jellemzője. A beágyazás mezők és módszerek egyetlen osztályon belüli összevonására utal.
Megakadályozza, hogy a külső osztályok hozzáférjenek az osztály mezőihez és módszereihez és megváltoztassák azokat. Ez elősegíti az adatok elrejtését is .
1. példa: Java beágyazás
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(); ) )
Kimenet
Terület: 30
A fenti példában létrehoztunk egy Area nevű osztályt. Ennek az osztálynak a fő célja a terület kiszámítása.
Kiszámításához a területen, akkor kell két változó: hossza és szélessége és eljárás: getArea()
. Ezért ezeket a mezőket és módszereket egyetlen osztályba csomagoltuk.
Itt a mezők és a metódusok más osztályokból is elérhetők. Ennélfogva ez nem adat rejtegetés .
Ez csak beágyazás . Csak hasonló kódokat tartunk együtt.
Megjegyzés : Az emberek a kapszulázást gyakran rejtegetésnek tekintik, de ez nem teljesen igaz.
A beágyazás a kapcsolódó mezők és módszerek együttes összekapcsolására utal. Ez felhasználható az adatok elrejtésének elérésére. A beágyazás önmagában nem rejtőzik el.
Miért beágyazás?
- A Java-ban a kapszulázás segít a kapcsolódó mezők és módszerek összetartásában, ami kódunkat tisztábbá és könnyebben olvashatóvá teszi.
- Segít az adatmezőink értékeinek ellenőrzésében. Például,
class Person ( private int age; public void setAge(int age) ( if (age>= 0) ( this.age = age; ) ) )
Itt az életkor változót készítjükprivate
és logikát alkalmazunk asetAge()
módszeren belül . Az életkor nem lehet negatív. - A getter és setter módszerek csak olvasható vagy csak írási hozzáférést biztosítanak osztályterületeinkhez. Például,
getName() // provides read-only access setName() // provides write-only access
- Segít leválasztani a rendszer összetevőit. Például több csomagba foglalhatjuk a kódot.
Ezeket a leválasztott komponenseket (csomag) függetlenül és egyidejűleg lehet fejleszteni, tesztelni és hibakeresni. És egy adott összetevő bármilyen változása nincs hatással más összetevőkre. - Az adatok elrejtését kapszulázással is elérhetjük. A fenti példában, ha a hosszúsági és szélességi változót privátra változtatjuk, akkor ezekhez a mezőkhöz való hozzáférés korlátozott.
És rejtve vannak a külső osztályok elől. Ezt hívjuk adat rejtésnek .
Adatok elrejtése
Az adatok elrejtése a megvalósítási részletek elrejtésével korlátozhatja adattagjaink hozzáférését. A beágyazás lehetőséget nyújt az adatok elrejtésére is.
Hozzáférés-módosítókat használhatunk az adatok elrejtésének elérésére. Például,
2. példa: Adatok elrejtése a privát specifikátor használatával
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()); ) )
Kimenet
24 éves a korom
A fenti példában private
terepi korunk van. Mivel van private
, az osztályon kívülről nem lehet hozzáférni.
Az életkor elérése érdekében public
módszereket használtunk : getAge()
és setAge()
. Ezeket a módszereket getter és setter módszereknek nevezzük.
Az életkor priváttá tétele lehetővé tette számunkra, hogy korlátozzuk az osztályon kívüli illetéktelen hozzáférést. Ez az adatok elrejtése .
Ha megpróbáljuk elérni a korosztályt a Fő osztályból, hibát kapunk.
// error: age has private access in Person p1.age = 24;