logo

Különbség az absztrakt osztály és az interfész között

Mind az absztrakt osztályt, mind az interfészt használják az absztrakció elérésére, ahol deklarálhatjuk az absztrakt metódusokat. Az absztrakt osztály és az interfész egyaránt nem példányosíthatók.

De sok különbség van az absztrakt osztály és az interfész között, amelyeket alább ismertetünk.

Absztrakt osztályFelület
1) Absztrakt osztály tud van elvont és nem absztrakt mód.Interfész lehet csak absztrakt mód. A Java 8 óta lehet alapértelmezett és statikus módszerek is.
2) Absztrakt osztály nem támogatja a többszörös öröklést .Felület támogatja a többszörös öröklődést .
3) Absztrakt osztály lehetnek végső, nem végleges, statikus és nem statikus változók .Az interfész rendelkezik csak statikus és végső változók .
4) Absztrakt osztály interfész megvalósítását tudja biztosítani .Felület nem tudja biztosítani az absztrakt osztály megvalósítását .
5) Az absztrakt kulcsszó az absztrakt osztály deklarálására szolgál.A felület kulcsszó interfész deklarálására szolgál.
6) An absztrakt osztály kiterjeszthet egy másik Java osztályt és több Java interfészt implementálhat.An felület csak egy másik Java interfészt tud kiterjeszteni.
7) An absztrakt osztály kiterjeszthető az 'extends' kulcsszó használatával.An felület megvalósítható az „implements” kulcsszó használatával.
8) Java-ra absztrakt osztály osztály tagjai lehetnek, például privát, védett stb.A Java felület tagjai alapértelmezés szerint nyilvánosak.
9) Példa:
nyilvános absztrakt osztály alakzat{
publikus absztrakt void draw();
}
Példa:
nyilvános felület Rajzolható{
void draw();
}

Egyszerűen az absztrakt osztály részleges absztrakciót (0–100%), míg az interfész teljes absztrakciót (100%) ér el.

Példa absztrakt osztályra és interfészre Java nyelven

Lássunk egy egyszerű példát, ahol az interfészt és az absztrakt osztályt egyaránt használjuk.

 //Creating interface that has 4 methods interface A{ void a();//bydefault, public and abstract void b(); void c(); void d(); } //Creating abstract class that provides the implementation of one method of A interface abstract class B implements A{ public void c(){System.out.println('I am C');} } //Creating subclass of abstract class, now we need to provide the implementation of rest of the methods class M extends B{ public void a(){System.out.println('I am a');} public void b(){System.out.println('I am b');} public void d(){System.out.println('I am d');} } //Creating a test class that calls the methods of A interface class Test5{ public static void main(String args[]){ A a=new M(); a.a(); a.b(); a.c(); a.d(); }} 
Tesztelje most

Kimenet:

 I am a I am b I am c I am d