Inhaltsverzeichnis
1. Warum Schnittstellen verwenden?
2. Was ist eine Schnittstelle?
3. Schritte zum Erstellen einer Schnittstelle
4. Schnittstelle ist eine Fähigkeit
5. Eine Schnittstelle ist eine Konvention
6. Beispiel für eine objektorientierte Schnittstellenprogrammierung
1. Warum Schnittstellen verwenden?
Warum Schnittstellen verwenden? Wir haben bereits früher etwas über Vererbung gelernt. Wir alle wissen, dass Unterklassen bei der Vererbung nur eine direkte übergeordnete Klasse erben können, aber in vielen Szenarien müssen wir mehrere übergeordnete Klassen erben. Was sollen wir tun? Zu diesem Zeitpunkt entstand die Schnittstelle.
Die Schnittstelle kann in Java eine „Mehrfachvererbung“ realisieren
Beispiel:
public interface Lock {} //接口
public interface DoorBell {} //接口
public class Door {} //父类
public class SecurityDoor extends Door implements Lock,DoorBell{} //子类
2. Was ist eine Schnittstelle?
- Das Schlüsselwort für eine Schnittstelle ist Schnittstelle
- Alle Methoden der Schnittstelle werden standardmäßig mit öffentlichem Abstract geändert (beschreibbar oder nicht).
- Schnittstelle kann nicht instanziiert werden
- Die implementierende Klasse muss alle Methoden der Schnittstelle implementieren
- Eine implementierende Klasse kann mehrere Schnittstellen implementieren
- Die Variablen in der Schnittstelle sind alle statische Konstanten
3. Schritte zum Erstellen einer Schnittstelle
(1) Erstellen Sie eine Schnittstelle
(a) Auf die erste Art erstellt, wird die Klasse in eine Schnittstelle geändert
(b) Die zweite Möglichkeit zum Erstellen besteht darin, eine Schnittstelle direkt zu erstellen
public interface USB {
void charge();
}
(2) Erstellen Sie eine Implementierungsklasse
public class Phone implements USB{
@Override
public void charge() {
System.out.println("充电");
}
}
(3) Anrufschnittstelle
public class Test {
public static void main(String[] args) {
USB usb = new Phone();
usb.charge();
}
}
4. Schnittstelle ist eine Fähigkeit
Formel: A hat B [A hat die Fähigkeit (Funktion) von B]
===》Ableiten, dass A B implementiert [B ist die Schnittstelle, A ist die Implementierungsklasse]
5. Eine Schnittstelle ist eine Konvention
1. Einige Schnittstellen haben keine Namen und keine Methoden
2. Einige Schnittstellen müssen sich durch Anmerkungen auf die Implementierungsregeln der Schnittstelle einigen
6. Beispiel für eine objektorientierte Schnittstellenprogrammierung
Entwickeln Sie einen Drucker
Tintenpatronen: Farbe, Schwarz und Weiß
Papiertyp: A4, B5
Tintenpatronen und Papier werden nicht vom Druckerhersteller bereitgestellt
Druckerhersteller müssen mit den auf dem Markt erhältlichen Tintenpatronen und Papier kompatibel sein
Die Spezifikationen für Patronen und Papier sind eine Konvention
Drucker müssen sich an diese Konventionen halten
Entwickelt mit schnittstellenorientierter Programmierung
Legen Sie Konventionen oder Standards für Tintenpatronen und Papier fest
Druckerhersteller entwickeln Drucker unter Verwendung von Standards für Tintenpatronen und Papier
Andere Hersteller produzieren Tintenpatronen und Papier nach den Standards für Tintenpatronen und Papier
public interface MoHe {
String getMoHe();
}
public interface Paper {
String getPaperType();
}
public class A4Paper implements Paper{
@Override
public String getPaperType() {
return "A4";
}
}
public class B5Paper implements Paper{
@Override
public String getPaperType() {
return "B5";
}
}
public class ColorMoHe implements MoHe{
@Override
public String getMoHe() {
return "彩色墨盒";
}
}
public class WhiteMoHe implements MoHe{
@Override
public String getMoHe() {
return "黑白墨盒";
}
}
public class Printer {
private MoHe mohe;
private Paper paper;
public void print(){
System.out.println("使用"+getMohe()+"在"+getPaper()+"纸张上打印");
}
public MoHe getMohe() {
return mohe;
}
public void setMohe(MoHe mohe) {
this.mohe = mohe;
}
public Paper getPaper() {
return paper;
}
public void setPaper(Paper paper) {
this.paper = paper;
}
}
public class Test {
public static void main(String[] args) {
Printer printer = new Printer();
MoHe moHe = new ColorMoHe();
printer.setMohe(moHe);
Paper paper = new A4Paper();
printer.setPaper(paper);
printer.print();
}
}