Forskjellen mellom abstrakt klasse og grensesnitt i Java

Nøkkelforskjellen mellom abstrakt klasse og grensesnitt i Java

  • I grensesnitt kan en klasse implementere flere grensesnitt, mens klassen kan arve bare én abstrakt klasse.
  • In Interface har ikke tilgangsmodifikatorer. Alt definert inne i grensesnittet antas å ha en offentlig modifikator, mens abstrakt klasse kan ha en tilgangsmodifikator.
  • Grensesnittet kan ikke inneholde datafelt, mens abstraktklassen kan ha datafelt.
  • Grensesnitt hjelper til med å definere en klasses perifere evner, mens en abstrakt klasse definerer identiteten til en klasse.

Grensesnitt vs abstrakt klasse i Java

Hva er en abstrakt klasse?

En klasse som har det abstrakte nøkkelordet i erklæringen kalles abstrakt klasse. Abstrakte klasser bør ha null eller flere abstrakte metoder. dvs. metoder uten kropp. Det kan ha flere konkrete metoder. Abstrakte klasser lar deg lage tegninger for konkrete klasser. Men den arvende klassen bør implementere den abstrakte metoden. Abstrakte klasser kan ikke instansieres.

Viktige grunner til å bruke grensesnitt

  • Grensesnitt brukes for å oppnå abstraksjon.
  • Designet for å støtte dynamisk metodeoppløsning under kjøretid
  • Det hjelper deg å oppnå løs kobling.
  • Lar deg skille definisjonen av en metode fra arvehierarkiet

Viktige grunner til å bruke abstrakt klasse

  • Abstrakte klasser tilbyr standardfunksjonalitet for underklassene.
  • Gir en mal for fremtidige spesifikke klasser
  • Hjelper deg med å definere et felles grensesnitt for underklassene
  • Abstrakt klasse tillater gjenbruk av kode.

Hva er et grensesnitt?

Grensesnittet er en blåkopi som kan brukes til å implementere en klasse. Grensesnittet inneholder ingen konkrete metoder (metoder som har kode). Alle metodene i et grensesnitt er abstrakte metoder. Et grensesnitt kan ikke instansieres. Imidlertid kan klasser som implementerer grensesnitt instansieres. Grensesnitt inneholder aldri forekomstvariabler, men de kan inneholde offentlige statiske sluttvariabler (dvs. konstantklassevariabler)

Forskjellen mellom grensesnitt og abstrakt klasse i Java

En abstrakt klasse lar deg lage funksjonalitet som underklasser kan implementere eller overstyre, mens et grensesnitt bare lar deg angi funksjonalitet, men ikke implementere den. En klasse kan utvide bare én abstrakt klasse mens en klasse kan implementere flere grensesnitt.

parametere Interface Abstrakt klasse
Speed Sakte Rask
Flere arv Implementer flere grensesnitt Bare én abstrakt klasse
Structure Abstrakte metoder Abstrakte og konkrete metoder
Når skal brukes Fremtidig forbedring For å unngå uavhengighet
Arv/ Gjennomføring En klasse kan implementere flere grensesnitt Klassen kan bare arve én abstrakt klasse
Standardimplementering Mens du legger til nye ting til grensesnittet, er det et mareritt å finne alle implementørene og implementere nydefinerte ting. Ved abstrakt klasse kan du dra nytte av standardimplementeringen.
Tilgangsmodifikatorer Grensesnittet har ikke tilgangsmodifikatorer. Alt som er definert inne i grensesnittet antas offentlig modifikator. Abstrakt klasse kan ha en tilgangsmodifikator.
Når skal brukes Det er bedre å bruke grensesnitt når ulike implementeringer kun deler metodesignatur. Polymorfisk hierarki av verdityper. Den bør brukes når ulike implementeringer av samme type deler en felles atferd.
Datafelt grensesnittet kan ikke inneholde datafelt. klassen kan ha datafelt.
Multiple Inheritance Standard En klasse kan implementere en rekke grensesnitt. En klasse arver bare én abstrakt klasse.
Gjennomføring Et grensesnitt er abstrakt slik at det ikke kan gi noen kode. En abstrakt klasse kan gi fullstendig standardkode som bør overstyres.
Bruk av Access-modifikatorer Du kan ikke bruke tilgangsmodifikatorer for metoden, egenskaper osv. Du kan bruke en abstrakt klasse som inneholder tilgangsmodifikatorer.
bruk Grensesnitt bidrar til å definere de perifere evnene til en klasse. En abstrakt klasse definerer identiteten til en klasse.
Definerte felt Ingen felt kan defineres En abstrakt klasse lar deg definere både felt og konstanter
Arv Et grensesnitt kan arve flere grensesnitt, men kan ikke arve en klasse. En abstrakt klasse kan arve en klasse og flere grensesnitt.
Konstruktør eller destruktorer Et grensesnitt kan ikke deklarere konstruktører eller destruktorer. En abstrakt klasse kan erklære konstruktører og destruktorer.
Begrensning av utvidelser Den kan utvide et hvilket som helst antall grensesnitt. Den kan bare utvide én klasse eller én abstrakt klasse om gangen.
Abstrakt nøkkelord I et abstrakt grensesnitt er nøkkelordet valgfritt for å erklære en metode som et abstrakt. I en abstrakt klasse er det abstrakte nøkkelordet obligatorisk for å erklære en metode som et abstrakt.
Klassetype Et grensesnitt kan bare ha offentlige abstrakte metoder. En abstrakt klasse har beskyttede og offentlige abstrakte metoder.

Eksempelkode for grensesnitt og abstrakt klasse i Java

Følgende er eksempelkode for å lage et grensesnitt og en abstrakt klasse i Java

Grensesnittsyntaks

interface name{
//methods
}

Java Eksempel på grensesnitt:

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

Abstrakt klassesyntaks

abstract class name{
    // code
}

Abstrakt klasseeksempel:

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