CodeGym /Java-blogg /Tilfeldig /Implementer i Java
John Squirrels
Nivå
San Francisco

Implementer i Java

Publisert i gruppen
Når noen snakker om Java OOP-paradigmet for arv, mener de vanligvis å utvide en overordnet klasse med en arving, en barneklasse. Men når du kommer over søkeordet Java implements, betyr det at vi flytter til et annet abstraksjonsnivå og begynner å jobbe med grensesnitt i Java. Vi skal snakke om hva grensesnitt er, hva de er for, hvordan implementering skjer.

Hva er grensesnitt og implementering

Du har sikkert hørt ordet "grensesnitt" mange ganger. For eksempel har en datamaskin et inngangsgrensesnitt (mus og tastatur), mange programmer har brukergrensesnitt. I vid forstand er et grensesnitt et bindeledd mellom to samhandlende parter. For eksempel samme tastatur eller TV-fjernkontroll. I programmering, og spesielt i Java, er et grensesnitt en spesifikk kontrakt som sier hva klassen som implementerer det skal gjøre. Et grensesnitt definerer bare atferd. Det står ikke noe om objektet som skal implementere det. Du kan deklarere et grensesnitt i Java slik:

public interface MyInterface  {

     // constants declaration 
     // methods without implementation
     // static methods
     // default methods (default)
     // private methods
}
Her er en syntaks for Implementer i Java:

public class MyClass implements MyInterface{
//implementing the methods of MyInterface 
//Other code
} 
Et grensesnitt beskriver atferd uten å spesifisere det. For eksempel kan en atferd som "bevegelse" brukes på forskjellige typer gjenstander: en sykkel, en person, en bil, vann i en elv, og så videre. Svømmingsadferden kan være oppførselen til en and, et skip eller en fisk. Disse gjenstandene har ingenting til felles annet enn at de kan bevege seg eller svømme. Ja, og selve bevegelsen med svømming de er veldig forskjellige. Men i Java kan du lage Duck , Boat , Fish- klasser og la dem implementere evnen til å svømme. Det er her søkeordet Java Implements brukes.

Implementer søkeordeksempel


public interface Swimmable {
  
   void moveForward();
   void TurnRight();
   void TurnLeft();
  
}
Som du kan se, er ikke selve metodene implementert. Men vi erklærte at klassene som implementerer dette grensesnittet må kunne svømme i en rett linje, samt svinge til høyre og venstre. La oss lage klasser som vil implementere dette grensesnittet.

public class Duck implements Swimmable {
//implementing the methods
   public void moveForward() {
       System.out.println(" Quack, I am moving forward...");
   }

   public void TurnRight(){
       System.out.println("I am turning right...");
   }
   public void TurnLeft(){
       System.out.println("I am turning left...");

   }

   public void Stop() {
       System.out.println("Quack. I am relaxing on the surface of the water...");
   }

}

public class Fish implements Swimmable {

   public void moveForward() {
       System.out.println("I am moving forward...");
   }

   public void TurnRight(){
       System.out.println("I am turning right...");
   }
   public void TurnLeft() {
       System.out.println("I am turning left...");
   }

   public void turnUp(){
       System.out.println("I am turning up...");
   }

   public void turnDown(){
       System.out.println("I am turning down...");
   }

   public void Stop() {
       System.out.println("I am relaxing somewhere under the water surface...");
   }
}
Alle klasser som implementerer Swimmable- grensesnittet, skal i henhold til kontrakten kunne svømme fremover (implementere moveForward()- metoden), samt svinge til høyre og venstre. Implementering av disse metodene er nødvendig. En and og en fisk svømmer forskjellig. La oss si at en fisk har to ekstra metoder som implementerer dens evne til å svømme opp og ned. Det svømmebare grensesnittet har ikke dette. Men hvis vi lager et barn i fiskeklassen, for eksempel tunfisk eller laks, vil de, som alle "fisk", kunne svømme opp og ned.

Flere grensesnitt i Java

Som du sikkert allerede vet, støtter ikke Java multippel arv. Det betyr at én klasse kun kan arves fra én superklasse. Men på en måte kan du fortsatt bruke "multippel arv" i Java, fordi en klasse kan implementere flere grensesnitt.

To implement multiple interfaces, use the next syntax: 
interface MyFirstInterface {
   public void myMethod();
}
interface MySecondInterface {
   public void myOtherMethod();
}

// MyClass implements both MyFirstInterface and MySecondInterface
class MyClass implements MyFirstInterface, MySecondInterface {
   public void myMethod() {
      //method implementation
   }
   public void myOtherMethod() {
     //method implementation
   }
}

Eksempel på flere grensesnitt

Husk at en and ikke bare kan svømme, men også fly. La oss skrive flygrensesnittet og implementere det i anda vår.

public interface Flyable {
   double startAge = 0.1;
   void fly();
}

public class Duck implements Swimmable, Flyable {

   public void moveForward() {
       System.out.println(" Quack, I am moving forward...");
   }

   public void TurnRight(){
       System.out.println("I am turning right...");
   }
   public void TurnLeft(){
       System.out.println("I am turning left...");

   }

   public void Stop() {
       System.out.println("Quack. I am relaxing on the surface of the water...");
   }

   public void fly(){
       System.out.println("I am flying!!!");
   }

}
Og igjen, det er viktig å huske hvorfor vi skriver grensesnittet. La oss si at hvis det implementeres av en fugl, et fly, en fallskjermhopper og en løvetann, vil flyreisene deres være helt annerledes.
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION