hi,
jango, da du meinen thread nicht geöffnet hast, habe ich einen neuen aufgemacht. so diesmal habe ich aber den code mitgepostet…
public class A
{
public static double x = 1;
public A()
{
this(4);
}
public A(double x)
{
A.x += x;
}
public void f(double x)
{
x+=2*x;
}
}
public class B extends A
{
public int y = 3;
public B(int x)
{
super();
y++;
}
public void f(int x)
{
A.x +=x;
}
public void f(double x)
{
A.x -= x;
y--;
}
}
public class M
{
public static void main (String [] args)
A a = new A(A.x);
System.out.println(a.x);
a.f(10);
System.out.println(a.x);
B b = new B(10);
System.out.println(b.x + " " + b.y);
b.f(10);
System.out.println(b.x);
a=b;
a.f(1.0);
System.out.println(a.x + " " + b.y );
a.f(10);
System.out.println(a.x);
}
so meine frage war, jetzt:
so, nach der zeile A a = new A(A.x); wird doch a.x=2.0. vorher war x =1. jetzt wird die statische variable zu 2.0. der funktionsaufruf a.f(10) ändert ja auch nichts an dem wert. es ist immer noch 2.0.
nun gehts ab: in der zeile B b = new B(10) wird ja ein neues objekt der klasse B erzeugt. dieser übernimmt doch alle attribute und methoden der oberklasse und erweitert sie. heißt das also, auch dass die statische variable public static double x= 1 (Anfangswert) übernommen wird, oder die veränderte statische variable public static double x=2.0; ?
mein compiler sagt mir, dass x = 2.0 übernommen werden muss, da nach
B b = new B(10)
System.out.println(b.x + " " + b.y);
nicht b.x=5.0 b.y=4 rauskommt, sondern b.x=6.0 b.y=4 rauskommt.
und als ich das gesehen hab, dachte ich sofort an den abschnitt der klassenvariablen in meinem java-buch. hab also das buch aufgeschlagen, und den abschnitt über static-variablen gelesen, und da stand drin, dass sich die klassenvariablen auf die objekte beziehen bz., dass die klassenvariablen für alls objekte gleich sind. sprich wenn sie sich ändert, gilt das für alle objekte…nicht nur für eins…
ich hoffe das reicht als eigenarbeit…ach ja, und an alle die mir antworten wollen:
antwortet bitte nur dann, wenn ihr wirklich helfen wollt, es macht einen echt runter, wenn man das ganze lernen will, und wenn da solche behinderten kommentare kommen wie : “…die frage hättest du dir sparen können, wenn du zwei klassen geschrieben hättest…blabla…” oder wenn ich lese, dass ich nur aus faulheit kurze fragen stelle und keine codes schreibe…nicht wahr, Uhres ??
also ich wiederhole es nochmal: nur antworten wenn man WIRKLICH helfen will…