Hvis man er givet en arraylist sådan her:
interface EtEllerAndet{
ArrayList<String> Noget(String blah);
}
Hvordan skal den behandles?
Som en funktion?
Du får en fejlmeddelelse fordi du kun må definere metodens navn, men ikke lave metodens indhold, når du laver et interface.
String er en Class og ved at bruge navnet kalder du metoder i String, Fy!
Du skal bare definere en almindelig class og lave objekter fra den. En class behøver ikke at have metoder.
Lidt om interfaces, som jeg forstår det.
Prøv at se i dette .pdf dokument side 20:
http://javabog.dk/foredrag/VPJ-1_E2005/vpj_02.pdfEt interface er en "tom" skabelon, eller en kontrakt om du vil, som fastlægger nogle metoder du SKAL definere i den class der implimenter interfacet.
Som i MouseListener:
public interface MouseListener
{
public void mousePressed(MouseEvent e);
public void mouseReleased(MouseEvent e);
public void mouseClicked(MouseEvent e);
public void mouseEntered(MouseEvent e);
public void mouseExited(MouseEvent e);
}
En af de smarte ting ved Java er at Class-er kan arve variable og metoder ved at at bruge extends i definitionen af sin class.
public class Bmi extends fedtberegninger
Problemet er at man kun kan arve fra en class (og alle dens super-classer)
Hvis man har flere class-er som har "fedtberegninger" som super-class kan de normalt ikke bruge hinandens metoder og på den måde sende oplysninger mellem class-erne.
Her kommer interface ind.
Du kan implementere flere interfaces i din class og når en eller anden metode fra en af din class-es interface-metoder bliver kaldt, vil den metode du har defineret i din class blive udført.
public interface Lydgiver
{
public void givLyd(int tid)
}
public Class Horn implements Lydgiver
{
int sekunder = 1;
public void givLyd(sekunder){
sig(dyt);
}
}
public Class Klokke implements Lydgiver
{
int sekunder = 1;
public void givLyd(sekunder){
sig(ding);
}
}
public Class TrykPaaKnap{
int sekunder = 1;
Lydgiver lyd1 = new Lydgiver;
public void ringPaa(sekunder){
lyd1.givLyd(dyt);
}
}
Når metoden ringPaa() bliver kaldt i TrykPaaKnap siger det dyt og ding fordi givLyd() i både Horn og Klokke bliver kaldt.
Sådan mener jeg at interfaces virker. Hvis nogen ved bedre, vil jeg også gerne vide det.
Mvh
Anders