Java -interface


Interfaces

Een andere manier om abstractie in Java te bereiken, is met interfaces.

An interfaceis een volledig " abstracte klasse " die wordt gebruikt om gerelateerde methoden met lege lichamen te groeperen:

Voorbeeld

// interface
interface Animal {
  public void animalSound(); // interface method (does not have a body)
  public void run(); // interface method (does not have a body)
}

Om toegang te krijgen tot de interfacemethoden, moet de interface worden "geïmplementeerd" (een beetje zoals geërfd) door een andere klasse met het implements sleutelwoord (in plaats van extends). De hoofdtekst van de interfacemethode wordt geleverd door de klasse "implementeren":

Voorbeeld

// Interface
interface Animal {
  public void animalSound(); // interface method (does not have a body)
  public void sleep(); // interface method (does not have a body)
}

// Pig "implements" the Animal interface
class Pig implements Animal {
  public void animalSound() {
    // The body of animalSound() is provided here
    System.out.println("The pig says: wee wee");
  }
  public void sleep() {
    // The body of sleep() is provided here
    System.out.println("Zzz");
  }
}

class Main {
  public static void main(String[] args) {
    Pig myPig = new Pig();  // Create a Pig object
    myPig.animalSound();
    myPig.sleep();
  }
}

Opmerkingen over interfaces:

  • Net als abstracte klassen kunnen interfaces niet worden gebruikt om objecten te maken (in het bovenstaande voorbeeld is het niet mogelijk om een ​​"Animal"-object in de MyMainClass te maken)
  • Interfacemethoden hebben geen hoofdtekst - de hoofdtekst wordt geleverd door de klasse "implementeren"
  • Bij de implementatie van een interface moet u al zijn methoden overschrijven
  • Interfacemethoden zijn standaard abstracten public
  • Interfacekenmerken zijn standaard public, staticenfinal
  • Een interface kan geen constructor bevatten (omdat deze niet kan worden gebruikt om objecten te maken)

Waarom en wanneer interfaces gebruiken?

1) Om veiligheid te bereiken - verberg bepaalde details en toon alleen de belangrijke details van een object (interface).

2) Java ondersteunt geen "meervoudige overerving" (een klasse kan slechts van één superklasse erven). Het kan echter worden bereikt met interfaces, omdat de klasse meerdere interfaces kan implementeren . Opmerking: Om meerdere interfaces te implementeren, scheidt u ze met een komma (zie onderstaand voorbeeld).


Meerdere interfaces

Om meerdere interfaces te implementeren, scheidt u ze met een komma:

Voorbeeld

interface FirstInterface {
  public void myMethod(); // interface method
}

interface SecondInterface {
  public void myOtherMethod(); // interface method
}

class DemoClass implements FirstInterface, SecondInterface {
  public void myMethod() {
    System.out.println("Some text..");
  }
  public void myOtherMethod() {
    System.out.println("Some other text...");
  }
}

class Main {
  public static void main(String[] args) {
    DemoClass myObj = new DemoClass();
    myObj.myMethod();
    myObj.myOtherMethod();
  }
}