Ero abstraktin luokan ja käyttöliittymän välillä Java

Keskeinen ero abstraktin luokan ja käyttöliittymän välillä Java

  • Käyttöliittymässä luokka voi toteuttaa useita rajapintoja, kun taas luokka voi periä vain yhden abstraktin luokan.
  • Käyttöliittymässä ei ole käyttöoikeusmuutoksia. Kaikella rajapinnan sisällä määritellyllä oletetaan olevan julkinen muokkaus, kun taas Abstract Class -luokalla voi olla pääsymuuttaja.
  • Käyttöliittymä ei voi sisältää tietokenttiä, kun taas abstraktissa luokassa voi olla tietokenttiä.
  • Liitännät auttavat määrittelemään luokan oheiskyvyt, kun taas abstrakti luokka määrittelee luokan identiteetin.

Käyttöliittymä vs. abstrakti luokka Java

Mikä on abstrakti luokka?

Luokkaa, jonka ilmoituksessa on abstrakti avainsana, kutsutaan abstraktiksi luokkaksi. Abstrakteissa luokissa tulee olla nolla tai enemmän abstrakteja menetelmiä. eli menetelmiä ilman kehoa. Sillä voi olla useita konkreettisia menetelmiä. Abstraktien luokkien avulla voit luoda piirustuksia konkreettisille luokille. Mutta perivän luokan tulisi ottaa käyttöön abstrakti menetelmä. Abstrakteja luokkia ei voi ilmentää.

Tärkeitä syitä käyttöliittymien käyttöön

  • Käyttöliittymiä käytetään saavuttamiseen abstraktio.
  • Suunniteltu tukemaan dynaamista menetelmän resoluutiota ajon aikana
  • Se auttaa saavuttamaan löysä kytkentä.
  • Voit erottaa menetelmän määritelmän periytymishierarkiasta

Tärkeitä syitä abstraktin luokan käyttämiseen

  • Abstraktit luokat tarjoavat oletustoimintoja alaluokille.
  • Tarjoaa mallin tulevia tiettyjä luokkia varten
  • Auttaa määrittelemään yhteisen käyttöliittymän alaluokilleen
  • Abstrakti luokka mahdollistaa koodin uudelleenkäytön.

Mikä on käyttöliittymä?

Käyttöliittymä on suunnitelma, jota voidaan käyttää luokan toteuttamiseen. Käyttöliittymä ei sisällä konkreettisia menetelmiä (menetelmiä, joissa on koodi). Kaikki käyttöliittymän menetelmät ovat abstrakteja menetelmiä. Käyttöliittymää ei voi instantoida. Kuitenkin luokat, jotka toteuttavat rajapintoja, voidaan instantoida. Liitännät eivät koskaan sisällä ilmentymämuuttujia, mutta ne voivat sisältää julkisia staattisia lopullisia muuttujia (eli vakioluokkamuuttujia)

Ero käyttöliittymän ja abstraktin luokan välillä Java

Abstrakti luokka antaa sinun tehdä toimintoja, joita alaluokat voivat toteuttaa tai ohittaa, kun taas käyttöliittymä sallii vain toiminnallisuuden ilmoittamisen, mutta ei sen toteuttamisen. Luokka voi laajentaa vain yhtä abstraktia luokkaa, kun taas luokka voi toteuttaa useita rajapintoja.

parametrit liitäntä Tiivistelmä luokka
Nopeus Hidas Nopea
Useita perintöjä Ota käyttöön useita käyttöliittymiä Vain yksi abstrakti luokka
Tuote mallit Abstraktit menetelmät Abstraktit ja konkreettiset menetelmät
Milloin käyttää Tulevaisuuden parannus Itsenäisyyden välttämiseksi
Perintö/toteutus Luokka voi toteuttaa useita rajapintoja Luokka voi periä vain yhden abstraktin luokan
Oletustoteutus Uusia juttuja lisättäessä käyttöliittymään on painajainen löytää kaikki toteuttajat ja toteuttaa uudet määritellyt tavarat. Abstract Class:n tapauksessa voit hyödyntää oletustoteutusta.
Pääsyn muokkaajat Käyttöliittymässä ei ole käyttöoikeusmuutoksia. Kaikki rajapinnan sisällä määritellyt oletetaan julkiseksi muokkaajaksi. Abstract Class -luokalla voi olla pääsyn muokkaaja.
Milloin käyttää On parempi käyttää käyttöliittymää, kun useat toteutukset jakavat vain menetelmän allekirjoituksen. Arvotyyppien polymorfinen hierarkia. Sitä tulisi käyttää, kun eri samantyyppisillä toteutuksilla on yhteinen käyttäytyminen.
Tietokentät käyttöliittymä ei voi sisältää tietokenttiä. luokassa voi olla tietokenttiä.
Usean perinnön oletus Luokka voi toteuttaa useita rajapintoja. Luokka perii vain yhden abstraktin luokan.
Täytäntöönpano Käyttöliittymä on abstrakti, joten se ei voi tarjota mitään koodia. Abstrakti luokka voi antaa täydellisen oletuskoodin, joka tulee ohittaa.
Access-muutosten käyttö Et voi käyttää käyttöoikeusmuutoksia menetelmälle, ominaisuuksille jne. Voit käyttää abstraktia luokkaa, joka sisältää käyttöoikeusmuutoksia.
Käyttö Liitännät auttavat määrittelemään luokan oheiskyvyt. Abstrakti luokka määrittelee luokan identiteetin.
Määritellyt kentät Mitään kenttiä ei voi määrittää Abstraktin luokan avulla voit määrittää sekä kenttiä että vakioita
Perintö Liitäntä voi periä useita rajapintoja, mutta ei voi periä luokkaa. Abstrakti luokka voi periä luokan ja useita rajapintoja.
Rakentaja tai tuhoajat Liitäntä ei voi ilmoittaa rakentajia tai tuhoajia. Abstrakti luokka voi julistaa rakentajia ja tuhoajia.
Laajennusten raja Se voi laajentaa minkä tahansa määrän rajapintoja. Se voi laajentaa vain yhtä luokkaa tai yhtä abstraktia luokkaa kerrallaan.
Abstrakti avainsana Abstraktissa käyttöliittymässä avainsana on valinnainen menetelmän ilmoittamiseksi abstraktiksi. Abstraktissa luokassa abstrakti avainsana on pakollinen, kun menetelmä julistetaan abstraktiksi.
Luokan tyyppi Käyttöliittymässä voi olla vain julkisia abstrakteja menetelmiä. Abstraktilla luokalla on suojattuja ja julkisia abstrakteja menetelmiä.

Esimerkkikoodi käyttöliittymälle ja abstraktille luokalle Java

Seuraavassa on esimerkkikoodi käyttöliittymän ja abstraktin luokan luomiseksi Java

Käyttöliittymän syntaksi

interface name{
//methods
}

Java Esimerkki käyttöliittymästä:

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

Abstrakti luokan syntaksi

abstract class name{
    // code
}

Abstrakti luokkaesimerkki:

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 " + (b * b));
    }
}

Tiivistä tämä viesti seuraavasti: