1.
also in dem Konstruktor "spiele ich Gott" und sage jedem Objekt was es machen soll, wie es es machen soll und wie es dabei aussehen soll.
Das würde ich so nicht sagen.
Wie das (später erzeugte) Objekt aussehen soll, wird ja schon durch die Klassendefinition festgelegt. Der Konstruktor ist nicht notwendig, um ein Objekt zu erzeugen.
Probier mal, eine Klasse zu schreiben, dessen Konstruktor gar nichts macht (einfach eine leere funktion).
(Ich weiss nicht, ob man in Java den Konstruktor auch ganz weglassen kann, statt ihn leer zu lassen).
Hab mal oberflächlich recherchiert, und fand folgende Seite ganz anschaulich:
FH München, Prof. Dr. R. Schiedermeier - Vorlesung "Programmieren I"
2.
Es ist sicher besser, Typumwandlung zu vermeiden, wenn möglich.
Aber stell Dir vor, Du hast zB ein Objekt "Auto", mit einer Eigenschaft "AnzahlRaeder".
AnzahlRaeder ist ein integer mit dem Wert 4.
Jetzt möchtest Du vielleicht ausrechnen, wieviel Luft Du brauchst, um alle vier Räder aufzupumpen, weißt aber schon, wieviel Luft in einen Reifen muss. Ich hab keine Ahnung, was da realistische Werte wären, aber es wird mit Sicherheit ein Wert vom Typ float sein.
Jetzt musst Du rechnen:
Volumen in einem Rad (float) mal 4 Räder (integer).
Für viele Programmiersprachen ist das wie Äpfel mit Birnen multiplizieren, das geht also nicht.
Du musst also, um das berechnen zu können, zuerst entweder den float in integer oder den integer in float 'casten'.
Für Computer sind Float und Interger etwa so verschieden wie ein Buchstabe und eine Zahl (die man theoretisch auch casten könnte, wenn man vorher festlegt, auf welche Weise das passieren soll).