Mi az interfész?
Az interfész tervrajz, amely felhasználható egy osztály megvalósítására. Az interfész nem tartalmaz konkrét módszereket (kóddal rendelkező módszereket). Az interfész összes metódusa elvont módszer.
Az interfész nem példányosítható. Az interfészeket megvalósító osztályok azonban példányosíthatók. Az interfészek soha nem tartalmaznak példányváltozókat, de tartalmazhatnak nyilvános statikus végső változókat (azaz állandó osztályváltozókat)
Mi az absztrakt osztály?
Az osztályt, amelynek deklarációjában az absztrakt kulcsszó szerepel, absztrakt osztálynak nevezzük. Az absztrakt osztályoknak legalább egy absztrakt módszerrel kell rendelkezniük. , azaz test nélküli módszerek. Több konkrét módszere lehet.
Az absztrakt osztályok lehetővé teszik tervrajzok készítését a konkrét osztályok számára. De az öröklődő osztálynak meg kell valósítania az absztrakt módszert.
Az absztrakt osztályokat nem lehet példányosítani.
Az interfészek használatának fontos okai
- Interfészeket használnak az absztrakció elérésére.
- Úgy tervezték, hogy támogassa a dinamikus módszer felbontását futás közben
- Segít a laza összekapcsolódásban.
- Lehetővé teszi, hogy elkülönítse a módszer definícióját az öröklési hierarchiától
Fontos okok az absztrakt osztály használatára
- Az absztrakt osztályok alapértelmezett funkciókat kínálnak az alosztályokhoz.
- Sablont biztosít a jövőbeni speciális órákhoz
- Segít meghatározni az alosztályok közös felületét
- Az absztrakt osztály lehetővé teszi a kód újrafelhasználhatóságát.
Interfész Vs. Absztrakt osztály
Az absztrakt osztály lehetővé teszi, hogy olyan funkciókat készítsen, amelyeket az alosztályok megvalósíthatnak vagy felülírhatnak, míg egy interfész csak a funkcionalitás megadását teszi lehetővé, de megvalósítását nem. Egy osztály csak egy absztrakt osztályt bővíthet, míg egy osztály több interfészt is megvalósíthat.
Paraméterek | Felület | Absztrakt osztály |
---|---|---|
Sebesség | Lassú | Gyors |
Több örökség | Több interfész megvalósítása | Csak egy elvont osztály |
Szerkezet | Absztrakt módszerek | Absztrakt és konkrét módszerek |
Mikor kell használni | Jövőbeni fejlesztés | A függetlenség elkerülése érdekében |
Öröklés / megvalósítás | Egy osztály több interfészt is megvalósíthat | Az osztály csak egy absztrakt osztályt örökölhet |
Alapértelmezett megvalósítás | Miközben új dolgokat ad a felülethez, rémálom, hogy megtalálja az összes megvalósítót és megvalósítsa az újonnan definiált dolgokat. | Absztrakt osztály esetén kihasználhatja az alapértelmezett megvalósítást. |
Hozzáférés-módosítók | Az interfész nem rendelkezik hozzáférés-módosítókkal. A felületen belül definiált minden nyilvános módosítónak tekinthető. | Az Abstract Class rendelkezik hozzáférés-módosítóval. |
Mikor kell használni | Jobb az interfészt használni, ha a különböző megvalósítások csak a módszer aláírását osztják meg. Az értéktípusok polimorf hierarchiája. | Akkor kell használni, ha az azonos típusú különféle megvalósítások közös viselkedést mutatnak. |
Adatmezők | az interfész nem tartalmazhat adatmezőket. | az osztálynak lehetnek adatmezői. |
Többszörös öröklődés alapértelmezett | Egy osztály számos interfészt valósíthat meg. | Egy osztály csak egy absztrakt osztályt örököl. |
Végrehajtás | Egy felület absztrakt, így nem tud kódot megadni. | Egy absztrakt osztály teljes, alapértelmezett kódot adhat, amelyet felül kell írni. |
Az Access módosítók használata | Nem használhat hozzáférési módosítókat a módszerhez, a tulajdonságokhoz stb. | Használhat egy absztrakt osztályt, amely hozzáférés-módosítókat tartalmaz. |
Használat | Az interfészek segítenek meghatározni az osztály periférikus képességeit. | Az elvont osztály meghatározza az osztály azonosságát. |
Meghatározott mezők | Nem definiálható mezők | Az absztrakt osztály lehetővé teszi mezők és konstansok definiálását |
Öröklés | Egy interfész több interfészt is örökölhet, osztályt azonban nem. | Az absztrakt osztály örökölhet osztályt és több interfészt. |
Konstruktor vagy destruktorok | Az interfész nem tudja deklarálni a kivitelezőket vagy a destruktorokat. | Egy elvont osztály deklarálhatja a konstruktorokat és a destruktorokat. |
A kiterjesztések korlátja | Bármely interfész kiterjeszthető. | Egyszerre csak egy osztályt vagy egy absztrakt osztályt bővíthet. |
Absztrakt kulcsszó | Absztrakt felületű kulcsszóban nem kötelező a metódust absztraktként deklarálni. | Absztrakt osztályban az elvont kulcsszó kötelező a módszer absztraktként történő deklarálásához. |
Osztálytípus | Egy felület csak nyilvános absztrakt módszerekkel rendelkezhet. | Egy elvont osztály védett és nyilvános elvont módszereket alkalmaz. |
Minta kód az interfészhez és az absztrakt osztályhoz a Java-ban
Az alábbiakban példakódot hozunk létre egy felület és egy absztrakt osztály létrehozásához Java-ban
Interfész szintaxisa
interface name{//methods}
Java interfész példa:
interface Pet {public void test();}class Dog implements Pet {public void test() {System.out.println("Interface Method Implemented");}public static void main(String args[]) {Pet p = new Dog();p.test();}}
Absztrakt osztály szintaxisa
abstract class name{// code}
Absztrakt osztály példa:
abstract class Shape {int b = 20;abstract public void calculateArea();}public class Rectangle extends Shape {public static void main(String args[]) {Rectangle obj = new Rectangle();obj.b = 200;obj.calculateArea();}public void calculateArea() {System.out.println("Area is " + (obj.b * obj.b));}}