Razlika između apstraktne klase i sučelja u Java

Ključna razlika između apstraktne klase i sučelja u Java

  • U sučelju, klasa može implementirati više sučelja, dok klasa može naslijediti samo jednu apstraktnu klasu.
  • U sučelju nema modifikatora pristupa. Pretpostavlja se da sve definirano unutar sučelja ima javni modifikator, dok apstraktna klasa može imati modifikator pristupa.
  • Sučelje ne može sadržavati podatkovna polja, dok apstraktna klasa može imati podatkovna polja.
  • Sučelja pomažu u definiranju perifernih sposobnosti klase, dok apstraktna klasa definira identitet klase.

Sučelje nasuprot apstraktnoj klasi Java

Što je apstraktna klasa?

Klasa koja ima apstraktnu ključnu riječ u svojoj deklaraciji naziva se apstraktna klasa. Apstraktne klase trebaju imati nula ili više apstraktnih metoda. tj. metode bez tijela. Može imati više konkretnih metoda. Apstraktne klase omogućuju vam stvaranje nacrta za konkretne klase. Ali klasa nasljeđivača trebala bi implementirati apstraktnu metodu. Apstraktne klase ne mogu se instancirati.

Važni razlozi za korištenje sučelja

  • Sučelja se koriste za postizanje apstrakcija.
  • Dizajniran za podršku dinamičkog razlučivanja metode tijekom izvođenja
  • Pomaže vam da postignete labav spoj.
  • Omogućuje vam da odvojite definiciju metode od hijerarhije nasljeđivanja

Važni razlozi za korištenje apstraktne klase

  • Apstraktne klase nude zadanu funkcionalnost za podklase.
  • Pruža predložak za buduće specifične razrede
  • Pomaže vam da definirate zajedničko sučelje za njegove podklase
  • Apstraktna klasa omogućuje ponovnu upotrebu koda.

Što je sučelje?

Sučelje je nacrt koji se može koristiti za implementaciju klase. Sučelje ne sadrži konkretne metode (metode koje imaju kod). Sve metode sučelja su apstraktne metode. Sučelje se ne može instancirati. Međutim, klase koje implementiraju sučelja mogu se instancirati. Sučelja nikada ne sadrže varijable instance, ali mogu sadržavati javne statičke konačne varijable (tj. konstantne varijable klase)

Razlika između sučelja i apstraktne klase u Java

Apstraktna klasa vam dopušta da napravite funkcionalnost koju podklase mogu implementirati ili nadjačati, dok vam sučelje dopušta samo da navedete funkcionalnost, ali ne i da je implementirate. Klasa može proširiti samo jednu apstraktnu klasu dok klasa može implementirati više sučelja.

Parametri Sučelje Sažetak klase
Brzina Usporiti pompeznost
Višestruko nasljeđivanje Implementirajte nekoliko sučelja Samo jedna apstraktna klasa
Struktura Apstraktne metode Apstraktne i konkretne metode
Kada koristiti Buduće poboljšanje Da bi izbjegli neovisnost
Nasljeđivanje/ Implementacija Klasa može implementirati više sučelja Klasa može naslijediti samo jednu apstraktnu klasu
Zadana implementacija Dok dodajete nove stvari u sučelje, prava je noćna mora pronaći sve implementatore i implementirati novodefinirane stvari. U slučaju apstraktne klase, možete iskoristiti zadanu implementaciju.
Modifikatori pristupa Sučelje nema modifikatore pristupa. Sve definirano unutar sučelja pretpostavlja se kao javni modifikator. Apstraktna klasa može imati modifikator pristupa.
Kada koristiti Bolje je koristiti sučelje kada različite implementacije dijele samo potpis metode. Polimorfna hijerarhija tipova vrijednosti. Trebalo bi se koristiti kada različite implementacije iste vrste imaju zajedničko ponašanje.
Podatkovna polja sučelje ne može sadržavati podatkovna polja. klasa može imati podatkovna polja.
Zadana vrijednost višestrukog nasljeđivanja Klasa može implementirati brojna sučelja. Klasa nasljeđuje samo jednu apstraktnu klasu.
Izvršenje Sučelje je apstraktno tako da ne može pružiti nikakav kod. Apstraktna klasa može dati potpuni, zadani kod koji treba nadjačati.
Korištenje modifikatora Accessa Ne možete koristiti modifikatore pristupa za metodu, svojstva itd. Možete koristiti apstraktnu klasu koja sadrži modifikatore pristupa.
Upotreba Sučelja pomažu u definiranju perifernih sposobnosti klase. Apstraktna klasa definira identitet klase.
Definirana polja Ne mogu se definirati polja Apstraktna klasa omogućuje definiranje i polja i konstanti
Nasljeđivanje Sučelje može naslijediti više sučelja, ali ne može naslijediti klasu. Apstraktna klasa može naslijediti klasu i više sučelja.
Konstruktor ili destruktori Sučelje ne može deklarirati konstruktore ili destruktore. Apstraktna klasa može deklarirati konstruktore i destruktore.
Ograničenje proširenja Može proširiti bilo koji broj sučelja. Može proširiti samo jednu klasu ili jednu apstraktnu klasu u isto vrijeme.
Apstraktna ključna riječ U apstraktnom sučelju ključna riječ je izborna za deklariranje metode kao sažetka. U apstraktnoj klasi, ključna riječ abstract obavezna je za deklariranje metode kao apstrakta.
Vrsta razreda Sučelje može imati samo javne apstraktne metode. Apstraktna klasa ima zaštićene i javne apstraktne metode.

Uzorak koda za sučelje i apstraktnu klasu u Java

Slijedi primjer koda za stvaranje sučelja i apstraktne klase Java

Sintaksa sučelja

interface name{
//methods
}

Java Primjer sučelja:

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

Sintaksa apstraktne klase

abstract class name{
    // code
}

Primjer apstraktne klase:

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