[JAVA] Komm schon Interface Forest

Schnittstelle </ b>, eine der drei Hauptsyntaxen </ b>, die ich zu Beginn des Studiums willkürlich definiert habe.

Wann wird diese Person verwendet? </ b> Ist es wirklich die notwendige Syntax? </ b>

Ich werde das enträtseln.

Übrigens spielt es keine Rolle, aber die verbleibenden drei Hauptsyntaxen sind erweitert und abstrakt. Jugendlichkeit. </ font>

Was ist Schnittstelle?

Schnittstelle ist ein englisches Wort, das die Kontaktfläche und die Zwischenfläche darstellt. (Aus Wikipedia) Der an einen Personal Computer angeschlossene USB wird auch als Schnittstelle </ b> zum Anschließen des Personal Computers an verschiedene Peripheriegeräte bezeichnet. Dies liegt daran, dass es zu mühsam ist, verschiedene Peripheriegeräte anzuschließen, wenn sie über eigene Anschlüsse verfügen. Daher sind sie gemäß dem als USB bezeichneten Standard standardisiert.

Mit diesem Gefühl können Sie Eingaben und Ausgaben realisieren, die anderen Klassen gemeinsam sind, indem Sie Interface implementieren. Machen wir das.

Wie erstelle ich eine Schnittstelle?

Verwenden Sie das Schlüsselwort interface, um eine Schnittstelle in Java zu definieren. In Interface können nur Mitgliedsvariablen und abstrakte Methoden definiert werden.

Mitgliedsvariablen werden automatisch als "public static final" behandelt, sodass sie nur als Konstanten verwendet werden können.

Da es sich bei der Methode um eine abstrakte Methode handelt, können Sie den Prozess nicht in Interface definieren, sondern nur den Methodennamen, den Rückgabewert und das formale Argument.

ExampleInterface.java


interface ExampleInterface{
  int getNum();
  void setNum(int num);
}

Also werde ich es mit dem Schlüsselwort implements auf der Klassenseite implementieren, die dies verwendet. "implementiert" bedeutet "Implementierung".

ExampleClass.java


class ExampleClass implements ExampleInterface{
  int num = 10;

  @Override
  int getNum(){
    return num;
  }

  @Override
  void setNum(int num){
    this.num = num;
  }
}

Um das oben Gesagte zu wiederholen, wird die in Interface definierte Methode ohne Erlaubnis zu einer abstrakten Methode, sodass sie überschrieben werden muss.

Vorerst habe ich versucht, den Getter und Setter zu implementieren, den ich bisher als Interface geschrieben habe.

Bequeme Nutzung der Schnittstelle

Kann gegossen werden

Sie können Interface auch wie beim Erben umwandeln.

Vorerst habe ich eine entsprechende Klasse gemacht. Die Schnittstelle verwendet die vorherige.

ExampleInterface.java


interface ExampleInterface{
  int getNum();
  void setNum(int num);
}

Machen Sie geeignete Klassen A und B.

ClassA.java


class ClassA implements ExampleInterface{
  int num = 10;

  @Override
  int getNum(){
    return num;
  }

  @Override
  void setNum(int num){
    this.num = num;
  }
}

ClassB.java


class ClassB implements ExampleInterface{
  int num = 20;

  @Override
  int getNum(){
    return num;
  }

  @Override
  void setNum(int num){
    this.num = num;
  }
}

Dann möchten Sie diesen verschieben? Ich werde versuchen, angemessen auszugeben, ohne die Vorteile von Interface zu nutzen.

RunClass.java


class RunClass{
  public static void main(String[] args){
    ClassA classA = new ClassA();
    ClassB classB = new ClassB();

    printNum(classA);
    printNum(classB);
  }

  static void printNum(ClassA classA){
    System.out.println(classA.getNum());
  }

  static void printNum(ClassB classB){
    System.out.println(classB.getNum());
  }
}

Ich habe viel geschrieben, um die Erklärung zu bekommen. Es ist in Ordnung, weil jetzt nur zwei Klassen definiert sind, aber es wäre schwierig, wenn es mehr Klasse C und Klasse D gäbe.

Lassen Sie es uns nun in den Schnittstellentyp umwandeln und verarbeiten </ b>!

RunClass.java


class RunClass{
  public static void main(String[] args){
    ClassA classA = new ClassA();
    ClassB classB = new ClassB();

    printNum(classA);
    printNum(classB);
  }

  static void printNum(ExampleInterface instance){
    System.out.println(instance.getNum());
  }
}

Alle Klassen, die "ExampleInterface" auf diese Weise implementieren, können jetzt mit der Methode "printNum" verarbeitet werden.

Ich denke, es kann verwendet werden, wenn Sie versprechen möchten, dass alle von Ihnen implementierten Klassen eine Methode mit einem gemeinsamen Namen </ b> haben.

Kann mehrfach implementiert werden

Die Vererbung mit dem Schlüsselwort "extensiv" konnte nicht zwei oder drei Klassen erben, die -Schnittstelle jedoch </ b>.

Auf PCs stehen nicht nur USB-, sondern auch analoge Anschlüsse zum Einstecken von Kopfhörern und LAN-Anschlüssen zur Verfügung. Mit diesem Gefühl können Sie es mit verschiedenen Ein- und Ausgängen kompatibel machen, indem Sie Interface hinzufügen.

Daher denke ich, dass Interface nur zum Implementieren von Eingabe- / Ausgabemethoden und nicht zum Schreiben der Gorigori-Verarbeitung verwendet werden sollte.

Wenn eine Klasse zu viele Funktionen hat, sollten Sie dies nicht tun, da Sie am Ende mehr als 1000 Zeilen in einer Datei haben und nicht wissen, wo oder was Sie geschrieben haben.

Wenn Sie also die Gorigori-Verarbeitung implementieren möchten, sollten Sie in Betracht ziehen, sie zu einer abstrakten Klasse zu machen. Wenn Sie eine andere Klasse erben möchten, sollten Sie zunächst die Funktionen trennen und eine andere Klasse erstellen.

Sie sind verantwortlich für ○○! Ich denke, es ist am besten, es in einem Wort ausdrücken zu können ...?

Shime

Die richtige Verwendung von Interface und abstraktem Unterricht scheint ein Problem zu sein, mit dem jeder einmal konfrontiert ist. Bis ich die optimale Lösung für mich selbst gefunden habe, verstehe ich mich mit Google-Lehrern und lese Qiitas Eintrag und Artikel der Naughty Engineer School. Ich denke ich sollte es sehen.

das ist alles!

Referenz

[Einführung in Java] Zusammenfassung der Verwendung der Benutzeroberfläche