Abstrakta metoder används i interface och abstrakta klasser.
Abstrakta metoder har inget innehåll, dvs man skapar ingen funktionskropp till metoden.
vanlig metod:
public void metod() { // innehåll }
abstrakt metod:
public void abstraktMetod(); // observera ; !!
Idén är att man kan skapa ett interface, som inte innehåller nån funktionalitet, utan bara berättar namnen på metoderna.
T ex för en bil så kan man skapa ett interface med abstrakta metoderna:
public interface Bil
{
public abstract void startaMotorn();
public abstract void stängMotorn();
public abstract void svängHöger();
}
Skapar du en klass som implementerar interfacet Bil, så måste du skapa de metoder som deklareras i interfacet, dvs startaMotorn(), stängMotorn(), svängHöger() ...
Kom ihåg att gränsnsitt aldrig kan innehålla kompletta metoder, utan endast statiska, konstanta värden samt abstrakta metoder.
Abstrakta klasser däremot kan innehålla kompletta metoder men de måste innehålla minst en(!) abstrakt metod.
En abstrakt klass kan aldrig instansieras direkt.
AbstraktKlass klass = new AbstraktKlass(); // går inte!
Du måste skapa en klass som ärver från den abstrakta klassen och för att den inte också ska vara abstrakt, måste du implementera den asbtrakta metoden i bas-klassen, annars måste även den ärvda klassen vara en abstrakt klass.