Programm lesen?

1 Antwort

Die Ausgaben 1 und 1.5 in der ersten println-Anweisung kommen daher zustande, dass der Parameterlose Konstruktor von A das Attribut b (zweiten Wert) auf 1.5 setzt und das Attribut a (erster Wert) auf den gerundeten Wert von b setzt. Das beruht darauf das b vom Typ double (Kommazahl) ist und explizit in einen Long (Ganzzahl) konvertiert wird.

Die Ausgaben 7.2 und null in der zweiten println-Anweisung kommen daher zustande, dass das Attribut b (erster Wert) das B von A erbt durch eine erneute Deklarierung ausgeblendet wird und somit die in B definierten 7.2 genommen werden. Der Wert null wird dort ausgegeben, weil dem Attribut c (zweiter Wert) nie ein Wert zugewiesen wird und somit keinen Wert besitzt (also null).

Die Ausgaben 8 und 4.0 in der dritten println-Anweisung kommen daher zustande, dass eine Instanz von B erstellt wird und dem Konstruktor als Parameter 4 übergeben wird, da im Konstruktor von B der Konstruktor von A aufgerufen wird wird das Attribut b (zweiter Wert) auf den Wert 4 gesetzt. Im aufgerufenen Konstruktor wird das Attribut a (erster Wert) auf 8 gesetzt.

Die Ausgaben 0 und 9.0 der vierten println-Anweisung kommen daher, dass eine Instanz von B mit dem Wert von a.a (1.5) und dem zweiten Konstruktor von B (der der einen Long entgegen nimmt) erstellt wird. Dieser Konstruktor wird aufgerufen, weil a vom Typ Long ist somit dieser Konstruktor besser passt. Der erste Wert kommt so zustande, weil der im Konstruktor vom B der Konstruktor von A mit dem Wert 0 aufgerufen wird und somit a (erster Wert) auf 0 gesetzt wird. Der zweite Wert kommt daher, dass der Wert von c (zweiter Wert) auf 9 gesetzt wurde.

Das true kommt zustande, da abgefragt wird ob ab eine Instanz von B ist und da ab vom Typ B ist ergibt dies true.

Die Ausgabe 5 in der sechsten println-Anweisung kommt daher, dass die Methode f(Integer) des Typen B ausgerufen wird und diese Methode gibt immer 5 zurück.

Die Ausgabe 6.0 in der letzten println-Anweisung kommt daher, dass die Methode f(float) aufgerufen wird, obwohl die Methode gleich heißt gibt diese jedoch einen anderen Rückgabewert, weil diese mit einem float aufgerufen wurde und nicht wie in der vorherigen Ausgabe mit einem Integer.

Ich hoffe ich konnte deine Fragen dazu beantworten, aber von du nochmal so eine Frage stellst wäre es besser zu spezifizieren was genau du nicht verstehtst.

lg Suiram1

Woher ich das weiß:Hobby – Ich programmiere seit 3 Jahren mit C#