Mikä on käyttöliittymä?
Käyttöliittymä on suunnitelma, jota voidaan käyttää luokan toteuttamiseen. Käyttöliittymä ei sisällä mitään konkreettisia menetelmiä (menetelmiä, joilla on koodi). Kaikki käyttöliittymän menetelmät ovat abstrakteja menetelmiä.
Käyttöliittymää ei voida instantisoida. Rajat, jotka toteuttavat rajapintoja, voidaan kuitenkin instantisoida. Liitännät eivät koskaan sisällä esiintymämuuttujia, mutta ne voivat sisältää julkisia staattisia lopullisia muuttujia (ts. Vakioluokan muuttujia)
Mikä on abstrakti luokka?
Luokkaa, jonka julistuksessa on abstrakti avainsana, kutsutaan abstraktiksi luokaksi. Abstrakteilla luokilla tulisi olla vähintään yksi abstrakti menetelmä. eli menetelmät ilman kehoa. Sillä voi olla useita konkreettisia menetelmiä.
Abstraktien luokkien avulla voit luoda piirustuksia konkreettisille luokille. Mutta perivän luokan tulisi toteuttaa abstrakti menetelmä.
Abstrakteja luokkia ei voida instantisoida.
Tärkeitä syitä käyttöliittymien käyttöön
- Rajapintoja käytetään abstraktion saavuttamiseen.
- Suunniteltu tukemaan dynaamista menetelmän tarkkuutta ajon aikana
- Se auttaa sinua saavuttamaan löysän kytkennän.
- Voit erottaa menetelmän määritelmän perintöhierarkiasta
Tärkeitä syitä abstraktin luokan käyttämiseen
- Abstraktit luokat tarjoavat oletustoiminnot alaluokille.
- Tarjoaa mallin tuleville luokille
- Auttaa määrittämään yhteisen käyttöliittymän sen alaluokille
- Abstrakti luokka sallii koodin uudelleenkäytettävyyden.
Liitäntä Vs. Abstrakti luokka
Abstrakti luokka antaa sinun tehdä toimintoja, jotka alaluokat voivat toteuttaa tai ohittaa, kun taas käyttöliittymä sallii sinun vain ilmoittaa toiminnallisuuden, mutta ei toteuttaa sitä. Luokka voi laajentaa vain yhtä abstraktia luokkaa, kun taas luokka voi toteuttaa useita rajapintoja.
Parametrit | Käyttöliittymä | Abstrakti luokka |
---|---|---|
Nopeus | Hidas | Nopeasti |
Useita perintöjä | Toteuta useita liitäntöjä | Vain yksi abstrakti luokka |
Rakenne | Abstraktit menetelmät | Abstraktit ja konkreettiset menetelmät |
Milloin käyttää | Tuleva parannus | Itsenäisyyden välttämiseksi |
Perintö / toteutus | Luokka voi toteuttaa useita rajapintoja | Luokka voi periä vain yhden tiivistelmäluokan |
Oletustoteutus | Vaikka lisäät uusia asioita käyttöliittymään, on painajainen löytää kaikki toteuttajat ja toteuttaa vasta määriteltyjä juttuja. | Abstraktin luokan tapauksessa voit hyödyntää oletustoteutusta. |
Pääsyn muokkaajat | Käyttöliittymässä ei ole pääsymuuttujia. Kaikki rajapinnan sisällä määritelty oletetaan julkiseksi muokkaajaksi. | Abstraktilla luokalla voi olla pääsyn muokkaaja. |
Milloin käyttää | On parempi käyttää käyttöliittymää, kun erilaiset toteutukset jakavat vain menetelmän allekirjoituksen. Arvotyyppien polymorfinen hierarkia. | Sitä tulisi käyttää, kun useilla samanlaisilla toteutuksilla on sama käytös. |
Tietokentät | käyttöliittymä ei voi sisältää tietokenttiä. | luokassa voi olla tietokenttiä. |
Useiden perintöjen oletus | Luokka voi toteuttaa useita rajapintoja. | Luokka perii vain yhden abstraktin luokan. |
Toteutus | Käyttöliittymä on abstrakti, joten se ei voi antaa koodia. | Abstrakti luokka voi antaa täydellisen oletuskoodin, joka tulisi ohittaa. |
Access-modifikaattoreiden käyttö | Et voi käyttää menetelmän muokkaajia menetelmään, ominaisuuksiin jne. | Voit käyttää abstraktia luokkaa, joka sisältää pääsyn muokkaajia. |
Käyttö | Liitännät auttavat määrittelemään luokan perifeeriset kyvyt. | Abstrakti luokka määrittää luokan identiteetin. |
Määritetyt kentät | Kenttiä ei voida määrittää | Abstraktin luokan avulla voit määrittää sekä kentät että vakiot |
Perintö | Liitäntä voi periä useita rajapintoja, mutta ei periä luokkaa. | Abstrakti luokka voi periä luokan ja useita rajapintoja. |
Rakentaja tai tuhoajat | Rajapinta ei voi ilmoittaa rakentajia tai tuhoajia. | Abstrakti luokka voi julistaa rakentajat ja destruktorit. |
Laajennusten raja | Se voi laajentaa mitä tahansa määrää rajapintoja. | Se voi laajentaa vain yhtä luokkaa tai yhtä abstraktia luokkaa kerrallaan. |
Tiivistelmä avainsana | Abstraktissa käyttöliittymän avainsanassa on valinnainen menetelmän julistamiseksi abstraktiksi. | Abstraktissa luokassa abstrakti avainsana on pakollinen menetelmän julistamiseksi abstraktiksi. |
Luokan tyyppi | Liitännällä voi olla vain julkisia abstrakteja menetelmiä. | Abstraktilla luokalla on suojattuja ja julkisia abstrakteja menetelmiä. |
Esimerkkikoodi Java-käyttöliittymälle ja tiivistelmäluokalle
Seuraavassa on esimerkkikoodi rajapinnan ja abstraktin luokan luomiseksi Java
Liitännän syntakse
interface name{//methods}
Java-käyttöliittymäesimerkki:
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();}}
Tiivistelmä luokan syntaksista
abstract class name{// code}
Tiivistelmä luokan esimerkistä:
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));}}