Interfész vs absztrakt osztály Java-ban: Mi a különbség?

Tartalomjegyzék:

Anonim

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));}}