Hallo Mugga,
herzlichen Glückwunsch! :-)
ich fange erst Mal mit Deinen ersten beiden Fragen an, den Code erklären mache ich später. Ich hoffe das ist ok für Dich :-)
mit "implements" sagt man welche Schnittstellen/Interfaces die Klasse implementiert. Eine Schnittstelle beinhaltet die Rümpfe von Methoden, hat also keine eigentliche Funktion. Implementiert eine Klasse nun eine Schnittstelle, muss diese Klasse alle Methoden aus der Schnittstelle (mit den definierten Methodensignaturen) implementieren. Erfüllt nun die Klasse diese Schnittstellenmethoden, kann ein Objekt dieser Klasse mit dem Typ dieser Schnittstelle angesprochen werden. Damit kann man gut Objekte voneinander kapseln. Das Benutzereingabenabfangen in den GUI Anwendungen mit SWT bzw. Swing wird mit solchen Schnittstellen gelöst. Da sind es z.B. die Schnittstellen ActionListener oder MouseListener.
Runnable ist also auch eine Schnittstelle. Sie gibt vor, dass die Klasse, die Runnable implementiert die Methode public void run()
anbieten muss. Diese Methode ist die Methode, die von der Java VM aufgerufen wird, wenn ein neuer Thread in einem Objekt der Klasse gestartet wird.
Die Methode public void main(string[] args) ist die Methode, die den Einstieg in ein Programm ermöglicht. In c/c++ gibt es diese Funktion auch: void main(int argc, char** argv) oder int main(int argc, char** argv)
Wenn man also ein c/c++ Programm kompiliert und dann ausführen will, springt der Aufruf immer in die Funktion void main(...). Du kannst jedem Programm auch Parameter übergeben. Genau dafür sind Übergabeparameter gedacht. In c/c++ ist der erste Parameter die Anzahl der Kommandozeilenparameter (wobei hier auch der Name vom Programm selbst mitgezählt wird) und der zweite Parameter ist ein Array von Zeichenketten/Parametern, getrennt durch Leerzeichen. In Java hat man den ersten Parameter weggelassen, da es einfach ist die Länge des Parameterarrays zu ermitteln.
Ich hoffe das war wenigstens etwas verständlich :-) Ich würde Dir aber mal vorschlagen in einer Bibliothek Dir paar C/c++/Java Bücher auszuleihen um Dich Stück für stück in das Thema einzulesen. Da meine Erklärungen vielleicht gut für einzelne Aspekte sind, aber zum Gesamtverständnis (und ohne das gehts einfach nicht) ist solche Literatur unumgänglich. Du könntest Dir auch alternativ auf den Seiten der Professoren des Fachbereichs Informatik der HTWG Konstanz die Skripte zu Programmiertechnik und Algorithmen und Datenstrukturen anschauen, die fand ich damals zum Einstieg recht gut.
Grüsse,
Marsu1x