Grensesnitt mot abstrakt klasse i Java: Hva er forskjellen?

Innholdsfortegnelse:

Anonim

Hva er grensesnitt?

Grensesnittet er en blåkopi som kan brukes til å implementere en klasse. Grensesnittet inneholder ikke noen konkrete metoder (metoder som har kode). Alle metodene til et grensesnitt er abstrakte metoder.

Et grensesnitt kan ikke instantieres. Imidlertid kan klasser som implementerer grensesnitt, instantiseres. Grensesnitt inneholder aldri forekomstvariabler, men de kan inneholde offentlige statiske endelige variabler (dvs. konstantvariabler)

Hva er abstrakt klasse?

En klasse som har det abstrakte nøkkelordet i erklæringen, kalles abstrakt klasse. Abstrakte klasser bør ha minst en abstrakt metode. , dvs. metoder uten kropp. Det kan ha flere konkrete metoder.

Abstrakte klasser lar deg lage tegninger for konkrete klasser. Men arveklassen bør implementere den abstrakte metoden.

Abstrakte klasser kan ikke instantieres.

Viktige årsaker til bruk av grensesnitt

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

Viktige grunner til å bruke abstrakt klasse

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

Interface Vs. Abstrakt klasse

En abstrakt klasse tillater deg å lage funksjonalitet som underklasser kan implementere eller overstyre, mens et grensesnitt bare tillater deg å oppgi funksjonalitet, men ikke å implementere den. En klasse kan bare utvide en abstrakt klasse mens en klasse kan implementere flere grensesnitt.

Parametere Grensesnitt Abstrakt klasse
Hastighet Sakte Fort
Flere arv Implementere flere grensesnitt Bare en abstrakt klasse
Struktur Abstrakte metoder Abstrakte og konkrete metoder
Når du skal bruke Fremtidig forbedring For å unngå uavhengighet
Arv / Implementering En klasse kan implementere flere grensesnitt Klassen kan bare arve en abstrakt klasse
Standard implementering Mens du legger til nye ting i grensesnittet, er det et mareritt å finne alle implementørene og implementere nylig definerte ting. I tilfelle Abstract Class kan du dra nytte av standardimplementeringen.
Få tilgang til modifikatorer Grensesnittet har ikke tilgangsmodifikatorer. Alt som er definert i grensesnittet antas å være offentlig modifikator. Abstract Class kan ha en tilgangsmodifikator.
Når du skal bruke Det er bedre å bruke grensesnitt når forskjellige implementeringer bare deler metodesignatur. Polymorf hierarki av verdityper. Den bør brukes når forskjellige implementeringer av samme slag har en felles oppførsel.
Datafelt grensesnittet kan ikke inneholde datafelter. klassen kan ha datafelt.
Standard for flere arv En klasse kan implementere mange grensesnitt. En klasse arver bare en 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 hjelper til med å definere perifere evner 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 destruktører Et grensesnitt kan ikke erklære konstruktører eller destruktorer. En abstrakt klasse kan erklære konstruktører og destruktorer.
Grense for utvidelser Det kan utvide et hvilket som helst antall grensesnitt. Det kan bare utvide en klasse eller en abstrakt klasse om gangen.
Abstrakt nøkkelord I et abstrakt grensesnittnøkkelord er det valgfritt å 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 abstrakt klasse i Java

Grensesnitt-syntaks

interface name{//methods}

Java-grensesnitteksempel:

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