Was ist der Unterschied zwischen "extends" und "implements" in java mit Bezug auf die Leistung und Speicher,etc
Was ist der Unterschied zwischen erstreckt und implementiert in java mit Bezug auf die Leistung und Speicher,etc.
Zum Beispiel nehmen Sie die folgenden Szenarien,
1)
public interface PrintResult
{
public final int NO_ERROR=0;
public final int SUCCESS=1;
public final int FAILED=-1;
}
public class PrintProcess implements PrintResult
{
//Perform some operation
}
2)
public class PrintResult
{
public final int NO_ERROR=0;
public final int SUCCESS=1;
public final int FAILED=-1;
}
public class PrintProcess extends PrintResult
{
//Perform some operation
}
Für die oben genannten Szenarien (1,2) was ist der Unterschied zwischen der Verwendung erstreckt (die Kind-Klasse), implementiert (Implementierung der Schnittstelle). mit Hinblick auf performance,Speicher,etc. ?
- Warteschlange
possible duplicate
von jemandem. - Sorry an alle ,ist Mein Englisch nicht gut ist.Also bitte verzeiht meine Fehler
- a) Mach ein benchmark und Bericht. b) Kompilieren und dekompilieren und vergleichen Sie die Ergebnisse. c) ich erwarte keine performance-Unterschied. Wo sollte ich? Auf Aufruf 1 million mal 'neue' entweder-Klasse?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Java erlaubt nicht, mehrere Klassen zu erweitern. Dies vermeidet einige Probleme der Mehrfachvererbung. Allerdings können Sie wählen, um mehrere Schnittstellen zu implementieren. Dies ist ein großes plus.
Einige Leute glauben auch
extends
verringert die Flexibilität Ihres Codes.Aber ich bezweifle, dass es irgendeinen großen Unterschied in der Leistung, Effizienz etc. In der Tat, Sie könnten selbst produzieren den gleichen byte-code ( obwohl ich bin mir nicht sicher ). Und Sie vergleichen zwei verschiedene Dinge, die unterschiedliche Funktionen haben, wie Ihre Fragen, wenn Äpfel sind effizienter als die Orangen.
einer Klasse eine andere Klasse erweitert und implementiert das interface. Schnittstelle eine andere Schnittstelle erweitert.
Schnittstelle noch nicht alle implementiert alle Methoden definiert, die Methoden sind leer, also wenn die Klasse erbt von der Schnittstelle sollte es implementieren Sie die Methoden. Aber wenn Klasse1 erbt von Class2, dann ist es bereits einige Methoden (aus Class2) und erstreckt sich nur Class2.