Hallo Leute, ich bin neu hier im Forum und habe gleich eine Frage bezüglich eines Java programms. Ich studiere derzeit Informatik und im ersten Semester habe ich Java, ich besitze nicht sonderlich viele Kentnisse, bin aber gerade dabei mir es beizubringen.
So viel zu mir. ich sitze derzeit an einer Altklausur und soll ein Programm analysieren und herausfinden, was die Console ausgeben würde sprich, ich soll die Konsole spielen. Nur verstehe ich paar Grundlegende Dinge nicht und würde mich freuen, wenn mir einer helfen könnte.
----------------------------------------------------------------------------------------------------------
Meine main Methode lautet:
----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
Klasse A
----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
Klasse B
----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
Was rauskommen sollte:
----------------------------------------------------------------------------------------------------------
[ 5 ]
[ 1 ]
[ 3 ] [ 3 ]
[ 2 ]
[ 3 ]
----------------------------------------------------------------------------------------------------------
Problemstellung:
----------------------------------------------------------------------------------------------------------
Wie die 5 am Anfang rauskommt habe ich durch langes überlegen verstanden. Wenn ich falsch liegen sollte korrigiert mich bitte. Bei dem ersten wert wird ja ein Objekt von A erzeugt und die variable a deklariert. A wird dabeid er Parameter 6 gegeben, was in Klasse A als int i "aufgefangen" wird und durch this(); wird ja der Konstruktor Public A() aufgerufen wo durch this.x der Wert 5 übergeben wird. Und anschließend sowohl bei Publich A() als auch Public A( int i) der Wert y auf 2 erhöht.
Der zweite Wert ist eine Methode wo 1.2f als float ebenfalls bei A abgefangen und durch return der Wert 1 zurück gegeben wird. Die Frage die sich bei mir stellt, warum spruckt Eclipse einen fehler aus wenn ich statt double float in die Klammer schreibe.
Beim dritten verstehe ich zwar wie b.z gleich 3 ist aber wieso ist b.y auch gleich 3? Das kann ich riegdnwie gar nicht nachvollziehen. Meine Vermutung war, dass durch die erste Zeile also von a, dass y den wert 2 behalten hat und nachher die Unterklasse B von A die Eigenschaften erbt und das dort halt der wert von wie in A übergeben wird, aber dann müsste y = 4 sein? Ich blick nicht durch...
Die 4. Zeile kann ich ebenfalls nachvollziehen.
Die 5. Zeile wiederum verstehe ich nicht ganz. Ich habe in meinem Parameter einen float wieso wird dieser in B einem double übergeben, dass leuchtet mir nicht richtig ein, gibt es dafür eine besondere Regel?
Mit Zeile meine ich übriegens die Out Abschnitte in der Main-Methode.
Und Allgemein hätte ich eine Frage, wie entscheidet sich mein programm bei mehrere Kontruktoren innerhalb der Ober und Unterklasse. Wenn ich z.b. sowohl in B als auch in A einen Konstruktor habe mit selben Parametern, wie entscheidet sich dann mein Programm?
Ich entschuldige mich, falls ich mich schlecht ausgedrückt habe bzw. zu viele Rechtschreibfehler gemacht und falls ich im falschen Forum bzw. Bereich bin.
Würde mich über ne Hilfe sehr freuen.
~ lg Burak
So viel zu mir. ich sitze derzeit an einer Altklausur und soll ein Programm analysieren und herausfinden, was die Console ausgeben würde sprich, ich soll die Konsole spielen. Nur verstehe ich paar Grundlegende Dinge nicht und würde mich freuen, wenn mir einer helfen könnte.
----------------------------------------------------------------------------------------------------------
Meine main Methode lautet:
----------------------------------------------------------------------------------------------------------
Java:
public class M {
public static void main(String[] args) {
A a = new A(6);
System.out.println(a.x);
int retA = a.f(1.3);
System.out.println(retA);
B b = new B(7);
System.out.println(b.y + " " + b.z);
int retB = b.f(12);
System.out.println(retB);
A ab = b;
int retAB = ab.f(1.2f);
System.out.println(retAB);
}
----------------------------------------------------------------------------------------------------------
Klasse A
----------------------------------------------------------------------------------------------------------
Java:
public class A {
public int x;
public static int y = 0;
public A() {
this.x = 5;
y++;
}
public A(int i) {
this();
y++;
}
public int f(double d) {
return 1;
}
public int f(int i) {
return 2;
}
}
----------------------------------------------------------------------------------------------------------
Klasse B
----------------------------------------------------------------------------------------------------------
Java:
public class B extends A {
public int z = 8;
public B(int x) {
z = 3;
}
public int f(double d) {
return 3;
}
public int f(float f) {
return 4;
}
}
----------------------------------------------------------------------------------------------------------
Was rauskommen sollte:
----------------------------------------------------------------------------------------------------------
[ 5 ]
[ 1 ]
[ 3 ] [ 3 ]
[ 2 ]
[ 3 ]
----------------------------------------------------------------------------------------------------------
Problemstellung:
----------------------------------------------------------------------------------------------------------
Wie die 5 am Anfang rauskommt habe ich durch langes überlegen verstanden. Wenn ich falsch liegen sollte korrigiert mich bitte. Bei dem ersten wert wird ja ein Objekt von A erzeugt und die variable a deklariert. A wird dabeid er Parameter 6 gegeben, was in Klasse A als int i "aufgefangen" wird und durch this(); wird ja der Konstruktor Public A() aufgerufen wo durch this.x der Wert 5 übergeben wird. Und anschließend sowohl bei Publich A() als auch Public A( int i) der Wert y auf 2 erhöht.
Der zweite Wert ist eine Methode wo 1.2f als float ebenfalls bei A abgefangen und durch return der Wert 1 zurück gegeben wird. Die Frage die sich bei mir stellt, warum spruckt Eclipse einen fehler aus wenn ich statt double float in die Klammer schreibe.
Beim dritten verstehe ich zwar wie b.z gleich 3 ist aber wieso ist b.y auch gleich 3? Das kann ich riegdnwie gar nicht nachvollziehen. Meine Vermutung war, dass durch die erste Zeile also von a, dass y den wert 2 behalten hat und nachher die Unterklasse B von A die Eigenschaften erbt und das dort halt der wert von wie in A übergeben wird, aber dann müsste y = 4 sein? Ich blick nicht durch...
Die 4. Zeile kann ich ebenfalls nachvollziehen.
Die 5. Zeile wiederum verstehe ich nicht ganz. Ich habe in meinem Parameter einen float wieso wird dieser in B einem double übergeben, dass leuchtet mir nicht richtig ein, gibt es dafür eine besondere Regel?
Mit Zeile meine ich übriegens die Out Abschnitte in der Main-Methode.
Und Allgemein hätte ich eine Frage, wie entscheidet sich mein programm bei mehrere Kontruktoren innerhalb der Ober und Unterklasse. Wenn ich z.b. sowohl in B als auch in A einen Konstruktor habe mit selben Parametern, wie entscheidet sich dann mein Programm?
Ich entschuldige mich, falls ich mich schlecht ausgedrückt habe bzw. zu viele Rechtschreibfehler gemacht und falls ich im falschen Forum bzw. Bereich bin.
Würde mich über ne Hilfe sehr freuen.
~ lg Burak
Zuletzt bearbeitet von einem Moderator: