Vad är gränssnitt?
Gränssnittet är en ritning som kan användas för att implementera en klass. Gränssnittet innehåller inga konkreta metoder (metoder som har kod). Alla metoder för ett gränssnitt är abstrakta metoder.
Ett gränssnitt kan inte instansieras. Klasser som implementerar gränssnitt kan dock instanseras. Gränssnitt innehåller aldrig instansvariabler, men de kan innehålla offentliga statiska slutliga variabler (dvs. konstantklassvariabler)
Vad är abstrakt klass?
En klass som har det abstrakta nyckelordet i sin deklaration kallas abstrakt klass. Abstrakta klasser bör ha minst en abstrakt metod. , dvs metoder utan kropp. Det kan ha flera konkreta metoder.
Abstrakta klasser låter dig skapa ritningar för betongklasser. Men den ärvande klassen bör implementera den abstrakta metoden.
Abstrakta klasser kan inte initieras.
Viktiga skäl för användning av gränssnitt
- Gränssnitt används för att uppnå abstraktion.
- Designad för att stödja dynamisk metodupplösning vid körningstid
- Det hjälper dig att uppnå lös koppling.
- Låter dig skilja definitionen av en metod från arvshierarkin
Viktiga skäl för att använda abstrakt klass
- Abstrakta klasser erbjuder standardfunktionalitet för underklasserna.
- Ger en mall för framtida specifika klasser
- Hjälper dig att definiera ett gemensamt gränssnitt för dess underklasser
- Abstrakt klass möjliggör återanvändning av kod.
Interface Vs. Abstrakt klass
En abstrakt klass tillåter dig att skapa funktioner som underklasser kan implementera eller åsidosätta medan ett gränssnitt bara tillåter dig att ange funktionalitet men inte att implementera den. En klass kan endast utvidga en abstrakt klass medan en klass kan implementera flera gränssnitt.
Parametrar | Gränssnitt | Abstrakt klass |
---|---|---|
Hastighet | Långsam | Snabb |
Flera arv | Implementera flera gränssnitt | Endast en abstrakt klass |
Strukturera | Abstrakta metoder | Abstrakta & konkreta metoder |
När ska man använda den? | Framtida förbättring | För att undvika oberoende |
Arv / Implementering | En klass kan implementera flera gränssnitt | Klassen kan bara ärva en abstrakt klass |
Standardimplementering | När du lägger till nya saker i gränssnittet är det en mardröm att hitta alla implementatorer och implementera nyligen definierade saker. | Vid abstrakt klass kan du dra nytta av standardimplementeringen. |
Åtkomstmodifierare | Gränssnittet har inte åtkomstmodifierare. Allt som definieras i gränssnittet antas vara offentlig modifierare. | Abstrakt klass kan ha en åtkomstmodifierare. |
När ska man använda den? | Det är bättre att använda gränssnittet när olika implementeringar bara delar metodsignatur. Polymorf hierarki av värdetyper. | Den ska användas när olika implementeringar av samma slag har ett gemensamt beteende. |
Datafält | gränssnittet kan inte innehålla datafält. | klassen kan ha datafält. |
Standard för flera arv | En klass kan implementera många gränssnitt. | En klass ärver bara en abstrakt klass. |
Genomförande | Ett gränssnitt är abstrakt så att det inte kan ge någon kod. | En abstrakt klass kan ge fullständig standardkod som bör åsidosättas. |
Användning av Access-modifierare | Du kan inte använda åtkomstmodifierare för metod, egenskaper etc. | Du kan använda en abstrakt klass som innehåller åtkomstmodifierare. |
Användande | Gränssnitt hjälper till att definiera perifera förmågor för en klass. | En abstrakt klass definierar klassens identitet. |
Definierade fält | Inga fält kan definieras | En abstrakt klass låter dig definiera både fält och konstanter |
Arv | Ett gränssnitt kan ärva flera gränssnitt men kan inte ärva en klass. | En abstrakt klass kan ärva en klass och flera gränssnitt. |
Konstruktör eller förstörare | Ett gränssnitt kan inte deklarera konstruktörer eller förstörare. | En abstrakt klass kan förklara konstruktörer och destruktörer. |
Gräns för tillägg | Det kan utöka valfritt antal gränssnitt. | Det kan bara utöka en klass eller en abstrakt klass åt gången. |
Abstrakt nyckelord | I ett abstrakt gränssnittsnyckelord är det valfritt att förklara en metod som ett abstrakt. | I en abstrakt klass är det abstrakta nyckelordet obligatoriskt för att förklara en metod som ett abstrakt. |
Klass typ | Ett gränssnitt kan endast ha offentliga abstrakta metoder. | En abstrakt klass har skyddade och offentliga abstrakta metoder. |
Exempelkod för gränssnitt och abstrakt klass i Java
Följande är exempelkod för att skapa ett gränssnitt och abstrakt klass i Java
Gränssnittssyntax
interface name{//methods}
Exempel på Java-gränssnitt:
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 klasssyntax
abstract class name{// code}
Abstrakt klasssexempel:
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));}}