Interface vs abstrakt klasse i Java: Hvad er forskellen?

Hvad er interface?

Interfacet er en plan, der kan bruges til at implementere en klasse. Interfacet indeholder ingen konkrete metoder (metoder, der har kode). Alle metoderne til en grænseflade er abstrakte metoder.

En grænseflade kan ikke instantieres. Klasser, der implementerer grænseflader, kan dog instantieres. Grænseflader indeholder aldrig instansvariabler, men de kan indeholde offentlige statiske endelige variabler (dvs. konstante klassevariabler)

Hvad er abstrakt klasse?

En klasse, der har det abstrakte søgeord i sin erklæring, kaldes abstrakt klasse. Abstrakte klasser skal have mindst en abstrakt metode. , dvs. metoder uden legeme. Det kan have flere konkrete metoder.

Abstrakte klasser giver dig mulighed for at oprette tegninger til konkrete klasser. Men den arvende klasse skal implementere den abstrakte metode.

Abstrakte klasser kan ikke instantieres.

Vigtige grunde til brug af grænseflader

  • Grænseflader bruges til at opnå abstraktion.
  • Designet til at understøtte dynamisk metodeopløsning under kørselstid
  • Det hjælper dig med at opnå løs kobling.
  • Giver dig mulighed for at adskille definitionen af ​​en metode fra arvshierarkiet

Vigtige grunde til at bruge abstrakt klasse

  • Abstrakte klasser tilbyder standardfunktionalitet for underklasserne.
  • Giver en skabelon til fremtidige specifikke klasser
  • Hjælper dig med at definere en fælles grænseflade til dens underklasser
  • Abstrakt klasse tillader genanvendelse af kode.

Interface Vs. Abstrakt klasse

En abstrakt klasse tillader dig at oprette funktionalitet, som underklasser kan implementere eller tilsidesætte, mens en grænseflade kun tillader dig at angive funktionalitet, men ikke at implementere den. En klasse kan kun udvide en abstrakt klasse, mens en klasse kan implementere flere grænseflader.

Parametre Interface Abstrakt klasse
Hastighed Langsom Hurtig
Flere arv Implementere flere grænseflader Kun en abstrakt klasse
Struktur Abstrakte metoder Abstrakte og konkrete metoder
Hvornår skal du bruge det? Fremtidig forbedring For at undgå uafhængighed
Arv / Implementering En klasse kan implementere flere grænseflader Klassen kan kun arve en abstrakt klasse
Standardimplementering Mens du tilføjer nye ting til grænsefladen, er det et mareridt at finde alle implementatorer og implementere nyligt definerede ting. I tilfælde af abstrakt klasse kan du drage fordel af standardimplementeringen.
Adgang modifikatorer Interfacet har ikke adgangsmodifikatorer. Alt defineret inde i grænsefladen antages at være offentlig modifikator. Abstract Class kan have en adgangsmodifikator.
Hvornår skal du bruge det? Det er bedre at bruge interface, når forskellige implementeringer kun deler metodesignatur. Polymorf hierarki af værdityper. Det skal bruges, når forskellige implementeringer af samme art deler en fælles opførsel.
Datafelter grænsefladen kan ikke indeholde datafelter. klassen kan have datafelter.
Standard for flere arv En klasse kan implementere adskillige grænseflader. En klasse arver kun en abstrakt klasse.
Implementering En grænseflade er abstrakt, så den ikke kan give nogen kode. En abstrakt klasse kan give en komplet standardkode, som skal tilsidesættes.
Brug af Access-modifikatorer Du kan ikke bruge adgangsmodifikatorer til metoden, egenskaber osv. Du kan bruge en abstrakt klasse, der indeholder adgangsmodifikatorer.
Anvendelse Grænseflader hjælper med at definere en klasses perifere evner. En abstrakt klasse definerer klassens identitet.
Definerede felter Ingen felter kan defineres En abstrakt klasse giver dig mulighed for at definere både felter og konstanter
Arv En grænseflade kan arve flere grænseflader, men kan ikke arve en klasse. En abstrakt klasse kan arve en klasse og flere grænseflader.
Konstruktør eller destruktører En grænseflade kan ikke erklære konstruktører eller destruktorer. En abstrakt klasse kan erklære konstruktører og destruktører.
Grænse for udvidelser Det kan udvide et hvilket som helst antal grænseflader. Det kan kun udvide en klasse eller en abstrakt klasse ad gangen.
Abstrakt nøgleord I et abstrakt interface-nøgleord er det valgfrit at erklære en metode som et abstrakt. I en abstrakt klasse er det abstrakte nøgleord obligatorisk for at erklære en metode som et abstrakt.
Klassetype En grænseflade kan kun have offentlige abstrakte metoder. En abstrakt klasse har beskyttede og offentlige abstrakte metoder.

Prøvekode til interface og abstrakt klasse i Java

Følgende er eksempelkode for at oprette en grænseflade og abstrakt klasse i Java

Grænsefladesyntaks

interface name{//methods}

Java Interface Eksempel:

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

Interessante artikler...