Az előző blogban megtudta Java-ban. Ebben a blogban meg fogjuk érteni még egy fontos pillérét azaz Java absztrakció, amelynek fő funkciója a belső megvalósítási részletek elrejtése.
A cikk alábbi témáival foglalkozom:
- Absztrakció az OOP-ban
- Mi a Java absztrakció?
- Absztrakt osztály
- Felület
- Valódi életpélda az absztrakcióra a Java-ban
- Absztrakció vs beágyazás
Ön is átnézheti ezt a felvételt ahol példákkal részletesen megértheti a témákat.
Absztrakció az OOP-ban
Amikor általában az absztrakcióról beszélünk, a szoftver nyelve az Absztrakció példája. Vegyünk egy példát, és írjunk egy nyilatkozatot
x = y + z
hogyan lehet beállítani az osztályútvonalat a linuxban
A fenti utasításban két változót adunk hozzá, amelyeket két különböző helyen tárolunk, majd az eredményt egy új helyen tároljuk. Szóval mi lesz ezután? Mint tudhatja, vannak regiszterek, utasításkészletek, programszámlálók, tároló egységek stb. Amikor az absztrakcióra hivatkozunk a Java-ban, akkor a absztrakcióról beszélünk és hogyan érhető el. Az absztrakció fogalma az OOP-ban éppen abban a pillanatban indul, amikor egy osztály kialakul. Az absztrakciót mindenhol alkalmazzák a szoftverekben és az OOP-ban.
Mi a Java absztrakció?
Az absztrakció nem más, mint az ötletekkel való foglalkozás minősége, nem pedig az események. Alapvetően a belső részletek elrejtésével és a lényeges dolgok megmutatásával foglalkozik a felhasználó számára.
Ha megnézi a fenti gif-et, láthatja, amikor hívást kap, kapunk egy lehetőséget, hogy vagy vegye fel, vagy csak utasítsa el. De a valóságban nagyon sok kód fut a háttérben. Tehát itt nem ismeri a hívás generálásának belső feldolgozását, ez az absztrakció szépsége. Az absztrakciót kétféleképpen érheti el:
a) Absztrakt osztály
b) Interfész
Értsük meg ezeket a fogalmakat részletesebben.
Absztrakt osztály
Az absztrakt osztály tartalmazza az „absztrakt” kulcsszót. De mit is jelent pontosan? Ha absztraktvá teszi az osztályt, akkor azt nem lehet példányosítani, vagyis nem hozhat létre absztrakt osztály objektumát. Ezenkívül egy absztrakt osztály tartalmazhat elvont és konkrét módszereket is.
Jegyzet: Absztrakt osztály segítségével 0-100% absztrakciót érhet el.
Absztrakt osztály használatához meg kell örökölnie az alaposztálytól. Itt meg kell adnia az absztrakt módszerek megvalósítását, különben absztrakt osztály lesz belőle.
Nézzük meg egy absztrakt osztály szintaxisát:
Absztrakt osztály Sport {// absztrakt osztály sport Absztrakt void jump () // absztrakt módszer}
Felület
A Java felület egy absztrakt módszerek és statikus állandók gyűjteménye. Amint azt egy felületen lehet tudni, minden módszer nyilvános és absztrakt, de nem tartalmaz konstruktort. Az absztrakcióval együtt az interfész a Java öröklődésének elérését is segíti.
Jegyzet: Felületek használatával 100% absztrakció érhető el.
Alapvetően az Interface a kapcsolódó módszerek csoportja üres testekkel. Értsük meg az interfészeket úgy, hogy példát vessünk egy Shape interfészre és a hozzá kapcsolódó módszerekre.
nyilvános felület alakja {public void draw () public double getArea ()}
Ezeknek a módszereknek minden „alakban” jelen kell lenniük, igaz? De a munkájuk más lesz.
Tegyük fel, hogy alakot akarsz rajzolni, mondjuk kört, négyzetet, téglalapot stb. Tudod, hogy minden alaknak megvan a maga mérete, például sugara, magassága és szélessége. Mondjuk, hogy kört akarok rajzolni, és kiszámítom annak területét. Ugyanezt figyelembe véve két módszert hoztam létre a fenti kódban, azaz a draw () és a getArea (). Ezekkel a módszerekkel most bármilyen alakzatot megrajzolhatok, és az interfészének megvalósításával kiszámolhatom a területet.
Most vizsgáljuk meg a funkcionalitást, hogyan lehet ezt a felületet megvalósítani.
Ennek a felületnek a megvalósításához az osztályod neve bármelyik Shape-ra változik, mondjuk „Kör” -re. Tehát az osztályfelület megvalósításához felhasználom az „implement” kulcsszót:
public class Circle megvalósítja az alakzatot {private double radius public Circle (double r) {this.radius = r} void draw () {System.out.println ('Drawing Circle')} public double getArea () {return Math.PI * this.radius * this.radius} public double getRadius () {return this.radius}} public class Test {public static void main (String args []) {Shape c = new Circle (8) c.draw () System. out.println ('Terület =' + c.getArea ())}}
A fenti példában meghatároztam a kör különböző módszereinek és kiszámított területének a funkcionalitását. Itt, egy interfész megvalósításakor, ez lehetővé teszi az osztály számára, hogy formálisabbá váljon az általa nyújtott viselkedéssel kapcsolatban. Létrehozhat egy másik osztályt is, mondjuk a „Rectangle” osztályt, amely ugyanazt az interfész „alakot” örökölheti különböző funkciókkal.
Valós idejű példa az java absztrakcióra
Tegyük fel, hogy a Sport felületünk. Itt a megvalósítást a „tollaslabda” és a „futball” osztályok biztosítják. Valódi forgatókönyv esetén a végfelhasználó nem ismeri a megvalósítási osztályt. Ennélfogva a megvalósítási osztály egy objektuma megadható a gyári módszerrel. A gyári módszer segítségével valamilyen kritérium alapján létrehozhatunk egy megvalósítási osztály objektumot.
Végezzük el ugyanezt, és hozzunk létre egy felületet a Sport.java néven.
public Interface Sport {void play ()} // Most létrehozunk egy „tollaslabda” nevű osztályt. nyilvános osztályú tollaslabda megvalósítja a Sportot {@Orride public void play () {System.out.println ('tollaslabda játék')}} // Következő lépésként hozzuk létre az utolsó osztályú „Labdarúgás” nyilvános osztályt A futball megvalósítja a Sportot {@Orride public void play () {System.out.println ('Futballozni')}
Az utolsó lépés egy „SportInterface” nevű főosztály létrehozása.
public SportInterface {public static void main (String args []) {// itt a kódod}
A fenti program végrehajtásakor a kimenet az alábbiak szerint alakul:
Tollaslabda játék ------------------- Focizni
Remélem, srácok tisztában vannak a kezelőfelülettel és annak használatával, hogyan érhetik el az absztrakciót. Most fejezzük be ezt a cikket az absztrakció és a beágyazás összehasonlításával.
Absztrakció vs beágyazás
Absztrakció | Egységbezárás |
Megoldja a problémát tervezési szinten | Megoldja a problémát a megvalósítás szintjén |
Nemkívánatos adatok elrejtésére és releváns eredmények megadására szolgál | A beágyazás a kód és az adatok egyetlen egységbe rejtését jelenti, hogy megvédje az adatokat a külvilágtól |
Külső elrendezés - a tervezés szempontjából használják | Belső elrendezés - a megvalósítás szempontjából használják |
Remélem, megértette az absztrakció és a kapszulázás közötti különbséget. Ezzel véget értünk a Java Abstraction blogon. Remélem, informatívnak találta, és hozzáadott értéket adott hozzá ismereteihez. Ha többet szeretne megtudni a Java-ról, olvassa el a
Most, hogy megértette „Mi a Java absztrakció”, nézze meg a az Edureka, egy megbízható online tanulási vállalat, amelynek több mint 250 000 elégedett tanulóval rendelkező hálózata elterjedt az egész világon. Az Edureka Java J2EE és SOA képzési és tanúsítási tanfolyamát olyan hallgatók és szakemberek számára tervezték, akik Java fejlesztők szeretnének lenni. A tanfolyamot úgy tervezték meg, hogy előrelépést nyújtson a Java programozásban, és képezze mind az alapvető, mind a fejlett Java koncepciókhoz, valamint a különböző Java keretrendszerekhez, például a Hibernate & Spring.
Van egy kérdésünk? Kérjük, említse meg a „Java Abstraction” blog megjegyzés rovatában, és a lehető leghamarabb kapcsolatba lépünk Önnel.