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