Sekä abstraktia luokkaa että käyttöliittymää käytetään abstraktion saavuttamiseen, jossa voimme ilmoittaa abstraktit menetelmät. Abstraktia luokkaa ja käyttöliittymää ei voida instantoida.
java char kokonaisluvuksi
Mutta abstraktin luokan ja käyttöliittymän välillä on monia eroja, jotka on annettu alla.
Abstrakti luokka | Käyttöliittymä |
---|---|
1) Abstrakti luokka voi on abstrakteja ja ei-abstrakteja menetelmiä. | Käyttöliittymä voi olla vain abstraktia menetelmiä. Java 8:sta lähtien sillä voi olla oletus- ja staattiset menetelmät myös. |
2) Abstrakti luokka ei tue moniperintöä . | Käyttöliittymä tukee moniperintöä . |
3) Abstrakti luokka voi sisältää lopullisia, ei-lopullisia, staattisia ja ei-staattisia muuttujia . | Käyttöliittymä on vain staattiset ja lopulliset muuttujat . |
4) Abstrakti luokka voi tarjota käyttöliittymän toteuttamisen . | Käyttöliittymä ei voi tarjota abstraktin luokan toteutusta . |
5) abstrakti avainsana käytetään ilmoittamaan abstrakti luokka. | The käyttöliittymän avainsana käytetään rajapinnan ilmoittamiseen. |
6) An abstrakti luokka voi laajentaa toista Java-luokkaa ja toteuttaa useita Java-rajapintoja. | An käyttöliittymä voi laajentaa vain toista Java-käyttöliittymää. |
7) An abstrakti luokka voidaan laajentaa käyttämällä avainsanaa 'laajentaa'. | An käyttöliittymä voidaan toteuttaa käyttämällä avainsanaa 'toteuttaa'. |
8) Javalle abstrakti luokka voi olla luokan jäseniä, kuten yksityinen, suojattu jne. | Java-käyttöliittymän jäsenet ovat oletuksena julkisia. |
9) Esimerkki: julkinen abstrakti luokka muoto{ julkinen abstrakti void draw(); } | Esimerkki: julkinen käyttöliittymä piirrettävä{ void draw(); } |
Yksinkertaisesti abstrakti luokka saavuttaa osittaisen abstraktion (0 - 100 %), kun taas käyttöliittymä saavuttaa täydellisen abstraktion (100 %).
Esimerkki abstraktista luokasta ja käyttöliittymästä Javassa
Katsotaanpa yksinkertainen esimerkki, jossa käytämme sekä käyttöliittymää että abstraktia luokkaa.
elokuvanäyttelijä Kajal
//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(); }}Testaa nyt
Lähtö:
I am a I am b I am c I am d