Was sind die Schnittstellen?
Wir haben bereits die Konzepte von Vererbung und Polymorphismus gesehen, und die Schnittstellen sind eine Art Java-Klasse, die sich durch die Darstellung einer bestimmten Funktionalität auszeichnet. In der gebräuchlichsten Form sind Interfaces eine Klasse von Methoden ohne Implementierung.
Gezeichnete Schnittstelle { öffentliche Nichtigkeitsziehung (); public void wähle Color (String color); }
Die Schnittstellen sind immer öffentlich und abstrakt, unabhängig davon, ob Sie die Modifikatoren platzieren oder nicht, und stellen dar, wie andere Objekte mit dem Objekt interagieren, das sie implementiert. Es mag kompliziert klingen, aber es ist einfach, wenn eine Klasse ein Interface implementiert, muss sie den entsprechenden Methoden einen Body geben. Dies bedeutet, dass Sie, solange ein Objekt eine Schnittstelle implementiert, völlig sicher sein können, dass das Objekt die entsprechenden Methoden für die erwähnte Schnittstelle hat.
In Java werden die Interfaces mit dem Schlüsselwort “implements” implementiert, und eine Klasse kann ein oder mehrere Interfaces implementieren, muss jedoch ausnahmslos die entsprechenden Methoden für jedes Interface überladen, da der Compiler sonst einen Fehler auslöst.
public class Square implementiert Dibujable { public String colorDeBorde; public String colorFill; public int high; public int width; @Override öffentliche leere Ziehung () { System.out.println ("Zeichne eine quadratische Breite" + width + ", height" + height + "und color" + colorFill); } @Override public void chooseColor (String color) { colorFill = color; } }
public class Linea implementiert Dibujable { public String colordetrazo; public Long String; @Override öffentliche leere Ziehung () { System.out.println ("Eine Linie wird gezeichnet" + lang); } @Override public void chooseColor (String color) { colorcolor = color; } }
In diesem Fall können Sie mit der Schnittstelle auf einfache Weise eine beliebige Anzahl von Objekten mithilfe des Polymorphismus-Konzepts manipulieren, das wir im zweiten Teil gesehen haben, und diese Objekte müssen nicht mehr in enger Beziehung zueinander stehen als die Art und Weise, wie andere Klassen mit ihnen interagieren. In unserem Beispiel könnten Sie später Pentagon-, Landscape- oder sogar ObraDeArte-Objekte haben, die die Zeichenoberfläche implementieren, und alle könnten von jeder Klasse behandelt werden, die die Zeichenoberfläche manipulieren kann.
import java.awt.Color; import java.util. *; public class DibujarCosas { // Diese Klasse generiert zufällig gezeichnete Objekte und zeichnet sie aus zufälligen Farben public static void main (String [] args) { List <Drawn> l = new ArrayList <Drawn> (); für (int i = 0; i <10; i ++) { if (Math.random ()> 0,5) { l.add (neue Zeile ()); } else { l.add (neues Quadrat ()); } } für (Dibujable d: l) { float H, S, B; H = (float) Math.random (); S = (float) Math.random (); B = (float) Math.random (); Farbe c = Color.getHSBColor (H, S, <img src = 'http: //www.solvetic.com/public/style_emoticons/default/cool.png' class = 'bbc_emoticon' alt = 'B)' />; d.CheckColor (String.valueOf (c)); d.draw (); } } }
Wie Sie im Beispiel sehen werden, kann die Hauptmethode in zwei Hauptmethoden unterteilt werden: die Methode, die die Liste der zu zeichnenden Objekte ausfüllt, und die Methode, die die Objekte aus der Liste zeichnet. Ich lade Sie ein, diese Klassen zu verwenden und zu sehen, wie sie sich verhalten, bevor Sie mit dem nächsten Abschnitt fortfahren, in dem wir sehen, warum Sie die Schnittstelle möglicherweise programmieren möchten.
Am Ende ist eine Oberfläche gleichbedeutend mit der tatsächlichen Oberfläche, Ihre Tastatur und Ihre Maus sind die Schnittstellen, mit denen Sie mit Ihrem Computer interagieren, und die internen Details, wie Dinge wie “Klicken” oder “Drücken der Esc-Taste” ausgeführt werden Die Schnittstelle zu Ihrem Computer ist vor Ihnen verborgen und für Sie nicht erforderlich. Das Einzige, was zählt, ist, dass Sie die Esc-Taste drücken und über diese Oberfläche auf klicken können.
Programmierschnittstellen
Ich hoffe, Sie werden verstehen, wie wichtig es sein kann, eine Schnittstelle zu programmieren. Im Wesentlichen konzentrieren Sie sich beim Erstellen Ihrer Programme auf die zu verwendende Schnittstelle und weniger auf das Objekt, das Sie als Parameter übergeben würden. Im Fall des Beispiels, das wir bisher behandelt haben, kann es wie folgt umgeschrieben werden:
import java.awt.Color; import java.util. *; public class DibujarCosas { // Diese Klasse generiert zufällig gezeichnete Objekte und zeichnet sie aus zufälligen Farben public static void main (String [] args) { List <Drawn> l = new ArrayList <Drawn> (); fillList (l); drawList (l); } public static void fillList (List <Drawn> l) { für (int i = 0; i <10; i ++) { if (Math.random ()> 0,5) { l.add (neue Zeile ()); } else { l.add (neues Quadrat ()); } } } public static void drawList (List <Drawn> l) { für (Dibujable d: l) { float H, S, B; H = (float) Math.random (); S = (float) Math.random (); B = (float) Math.random (); Farbe c = Color.getHSBColor (H, S, <img src = 'http: //www.solvetic.com/public/style_emoticons/default/cool.png' class = 'bbc_emoticon' alt = 'B)' />; d.CheckColor (String.valueOf (c)); d.draw (); } } }
Natürlich habe ich nur die Teile der Hauptmethode in die beiden sekundären Methoden getrennt, aber das Schöne daran ist, dass diese beiden Methoden voneinander unabhängig sind und von den Implementierungen der Draft-Schnittstelle unabhängig bleiben. Wenn ich eine der beiden Methoden ändern möchte, ist die andere im geringsten nicht betroffen. Wenn die Pentagon- und ObraDeArte-Implementierungen angezeigt werden, können Sie sie beim Erstellen der Methodenliste (List <Dibujable> 1) und der Methode hinzufügen drawList (List <Draft> l) erfordert keine Änderung, da es für die Schnittstelle programmiert wurde.
Ich weiß, dass es zu diesem Zeitpunkt furchtbar kompliziert erscheint, aber später werden wir sehen, wie Spring alles verwaltet, was auf eine Benutzeroberfläche programmiert ist, und wir werden sogar sehen, wie man aspektorientiert programmiert und dies wird uns sehr dabei helfen, die Funktionsweise von Spring zu verstehen.
Ich hoffe, wir fahren Woche für Woche mit diesen Tutorials fort, vergessen Sie nicht, Ihre Kommentare bis zum nächsten Mal zu hinterlassen!