2016-12-23 4 views
-1

Normalerweise ist der Deklarationstyp der Schnittstellentyp und der Initialisierungsteil hat den Implementierungstyp. Was ist der Unterschied zwischen List<String> list = new ArrayList<String> und ArrayList<String> list = new ArrayList<String>? Was ist der Unterschied neben dem Polymorphismus?Was ist der Unterschied zwischen der Liste <String> list = new ArrayList <String> und ArrayList <String> list = new ArrayList <String>?

+2

Hinweis: Ich brauchte weniger als 10 Sekunden, um diese Antwort zu finden. Das nächste Mal bitte ** Sie ** versuchen, diese vorherige Forschung zu tun. – GhostCat

Antwort

0

Liste ist eine Schnittstelle und ArrayList ist seine Implementierungsklasse. Wir können kein Objekt der Schnittstelle erstellen, weil sie abstrakt sind, aber wir können eine Referenz der Schnittstelle erstellen, die nichts anderes als Listenliste ist. Mit dieser Referenz können wir Methoden von ArrayList aufrufen.

+0

Dies beantwortet die Frage nicht. Die Unterschiede zwischen der Verwendung von "List <..>" oder "ArrayList <..>" als Variablentyp werden nicht beantwortet. – Tom

1

Es gibt keine wichtigen Unterschiede. Aber wenn Sie verwenden so etwas wie diese

void doSomething(List list) 
{} 

Sie jedes Objekt verwenden kann, die die List-Klasse erweitert, aber wenn Sie so etwas wie diese Leere doSomething (Arraylist Liste) verwenden {} können Sie verwenden nur Arraylist-Objekt und seine Unterklassen.

+0

Danke, gibt es irgendeine Leichtigkeit in Bezug auf die Code-Bearbeitung in Zukunft, wenn ich Interface verwende (zB: list = new ArrayList (); –

+0

Ja, Abstraktion ist eine der OOP-Prinzipien!) –

+0

Kannst du mir ein Beispiel geben? ;) –

Verwandte Themen