Ich bin nur ein Java-Anfänger, der erst kürzlich gelernt hat, wie man Klassen erbt Wenn Sie eine falsche Meinung haben, wäre es hilfreich, wenn Sie uns dies auf leicht verständliche Weise mitteilen könnten. Dieses Mal werde ich das Verständnis der Benutzeroberfläche vorstellen und erläutern, wann es zweckmäßig ist, sie anhand konkreter Beispiele zu verwenden.
interface wird verwendet, um die Methode später zu implementieren und zu verwenden, ohne den Verarbeitungsinhalt zu Beginn speziell zu schreiben. Wirksam, wenn Sie den Prozess ändern möchten, da die Methode später implementiert wird.
Meine Ansicht, als ich nur das oben Genannte wusste ---> ** Verwenden Sie es, wenn Sie die vorherige Vision nicht konkret sehen können? ** **. ---> ** Wenn Sie den Code selbst schreiben, müssen Sie ihn verwenden? ** **. ---> ** Ist es nützlich, wenn Sie die Variablen deklarieren möchten, die später verwendet werden sollen, und sie später zusammen verwenden möchten? ** **.
Es können nur ** Konstante ** und ** Methode ** definiert werden Außerdem erhalten die Mitgliedsvariablen der Schnittstelle automatisch "public static final", sodass sie zu ** Konstanten ** werden.
Schnittstellendefinition (Beispiel)
Schnittstelle Name der Schnittstelle{
int Konstante 1= 1;
int Konstante 2= 2;
String-Konstante 3= "hello";
void Funktionsname, für den die Verarbeitung später geschrieben wird();
}
Die in der Schnittstelle definierten Konstanten können mit den definierten Funktionsnamen wiederverwendet werden! ✌️
Beispiel
Main.java
interface Calc {
int num1 = 1;
int num2 = 2;
String str1 = "multiplication";
String str2 = "division";
void calculation();
}
class Multi implements Calc {
public void calculation() {
System.out.println(str1);
System.out.println(num1 * num2);
}
}
class Divi implements Calc {
public void calculation(){
System.out.println(str2);
System.out.println(num1 / num2);
}
}
public class Main {
public static void main(String[] args){
Multi mlt = new Multi();
mlt.calculation();
Divi div = new Divi();
div.calculation();
}
}
Lauf
$ java Main
multiplication
2
division
0
Die durch den Schnittstellennamen *** Calc *** definierten Konstanten und Funktionen Sie können sehen, dass es in der Multiplikationsklasse *** Multi *** und der Divisionsklasse *** Divi *** verfügbar ist.
Ich denke, einige Leute haben vielleicht gedacht
Ja, ** dasselbe, wenn Sie das, was Sie in der übergeordneten Klasse definiert haben, an die untergeordnete Klasse erben! ** **.
Das ist kein Fehler.
Was sind die Vorteile von ** interface **?
Das heißt ** Sie können mehrere Schnittstellen gleichzeitig erben **
Wenn in ** Klassenvererbung ** eine übergeordnete Klasse an eine untergeordnete Klasse geerbt wird, Die erbende untergeordnete Klasse sollte nur ** eine übergeordnete Klasse ** angeben können.
** "Kann mehrere zuvor erstellte Schnittstellen verarbeiten (erben)" **
Das ist der Vorteil der ** Schnittstelle ** gegenüber der ** Klassenvererbung **.
Ich dachte, dass die Funktion als Schnittstelle in einer solchen Situation nützlich wäre.
Schauen Sie sich zunächst den folgenden Code an. Geben Sie *** Anzahl der Schüler, Anzahl der Klassenzimmer, Anzahl der Noten *** meiner eigenen Schule ein, Outputs ** Bevölkerung pro Klassenzimmer und Bevölkerung pro Klasse ** an jeder Schule
Main.java
//Grundschule
interface Primary_school {
int p_people = 500;
int p_classes = 18;
int p_year = 6;
String p_name = "Mine";
void pcal();
}
//Junior High School
interface Junior_high_school {
int j_people = 750;
int j_classes = 27;
int j_year = 3;
String j_name = "Yoto";
void jcal();
}
//Universität
interface University {
int u_people = 10000;
int u_classes = 50;
int u_year = 4;
String u_name = "Tsukuba";
void ucal();
}
//Klassenbevölkerungsdichte
class PopulationDensity implements Primary_school, Junior_high_school, University{//, Junior_high_school, University {
public void pcal() {
System.out.print(p_name+"--->");
System.out.println(p_people / p_classes);
}
public void jcal(){
System.out.print(j_name+"--->");
System.out.println(j_people / j_classes);
}
public void ucal(){
System.out.print(u_name+"--->");
System.out.println(u_people / u_classes);
}
}
//Bevölkerungsdichte
class PopulationPerYear implements Primary_school, Junior_high_school, University{
public void pcal(){
System.out.print(p_name+"--->");
System.out.println(p_people / p_year);
}
public void jcal(){
System.out.print(j_name+"--->");
System.out.println(j_people / j_year);
}
public void ucal(){
System.out.print(u_name+"--->");
System.out.println(u_people / u_year);
}
}
public class Main {
public static void main(String[] args){
String pink = "\u001b[00;35m";
String cyan = "\u001b[00;36m";
String end = "\u001b[00m";
PopulationDensity PD = new PopulationDensity();
System.out.println(pink+"【PopulationPerClass】: "+end);
PD.pcal();
PD.jcal();
PD.ucal();
PopulationPerYear PPY = new PopulationPerYear();
System.out.println(cyan+"【PopulationPerYear】: "+end);
PPY.pcal();
PPY.jcal();
PPY.ucal();
//div.calculation();
}
}
Ausführungsergebnis
Sie können sehen, dass jede Klasse mehrere definierte Schnittstellen erben kann.
Ich denke, dies ist später eine sehr nützliche Funktion, wenn mehrere Personen für die Entwicklung unterschiedlicher Eingabedaten verantwortlich sind.
Klassenvererbung | Schnittstelle | |
---|---|---|
verdienen | Kann mit Variablen und Funktionen umgehen, die in der übergeordneten Klasse definiert sind | Kann mehrere Schnittstellen gleichzeitig verarbeiten |
Fehler | Nur eine Klasse kann von einer untergeordneten Klasse geerbt werden | Kann nur mit Konstanten umgehen |
Derzeit sieht es heute so aus
Aktualisiert: 25.04.2019
Recommended Posts