Kursinnehåll
Java OOP
Java OOP
Abstrakt Klass vs Interface
Vilken ska man välja?
Från de tidigare kapitlen har du kanske märkt att abstract classes
och interfaces
är ganska lika. Det finns dock skillnader mellan dem. För att gå rakt på sak kan man säga att i praktiken föredras interface ofta framför abstrakta klasser. Men låt oss förstå varför det är så.
Vad är skillnaden?
För att börja behöver vi förstå skillnaderna mellan en abstrakt klass och ett interface. Låt oss gå igenom listan:
Syntax:
abstract class
vid deklaration av en abstrakt klass ochinterface
vid deklaration av ett interface;Arv-nyckelord:
extends
för att ärva en abstrakt klass, ochimplements
för att ärva ett interface;Namn för subklasser: En subklass till en
abstract class
kallas en subklass eller ärvande klass, medan en subklass till ettinterface
kallas en klass - implementation;Antal arv: Du kan ärva från endast en abstrakt klass, medan du kan ärva från flera interface;
En
abstract class
kan ha både implementerade och abstrakta metoder. Från och med Java 8 kan interface också hadefault
-metoder, vilket vi kommer att diskutera senare i detta avsnitt;Metoder i en abstrakt klass kan ha valfri åtkomstmodifierare, medan i interface är endast åtkomstmodifieraren
public
tillåten.
Note
Vi kan också samtidigt ärva från en abstrakt klass och implementera ett interface. Först använder vi nyckelordet
extends
, och sedan använder viimplements
. Syntaxen ser ut så här:class ClassName extends AbstractClass implements Interface {}
Enkelt uttryckt kan man se en abstrakt klass som en klass som tillhandahåller viss funktionalitet och upprätthåller vissa regler men lämnar vissa delar till sina subklasser att slutföra. Ett interface, å andra sidan, är som en checklista som en klass måste uppfylla, och specificerar vilka metoder den måste ha, utan att tillhandahålla någon faktisk kod.
Tack för dina kommentarer!