Hallo allerseits,
In welcher Reighenfolge wird in Java ein Objekt initialisiert?
Die Attribute eines Objekt können z.B. bestehen aus:
- einfachen DatentypenAttributen
- Objekten (mit dem Datentyp einer Klasse)
außerdem kann es Attribute (und Methoden) erben
Beispiel: (komplettes Programm unten)
class Sohn extends Vater{
public int s=Do.myprint("S0");
Freundin myf=new Freundin(123);
public Sohn(int pv, int ps){
super(ps);
s = ps;
}
}
class MyTest extends MyVater {
private i = 12;
MyKlasse myk;
}
Frage:
I) Was passiert, wenn z.B. ein Objekt dieser Klasse Sohn angelegt
wird.
In welcher Reihenfolge werden die Attribute dieser Klasse wie initialisiert?
Meine Meinung ist folgende:
1)
1.1) Standardinitialisierung der Attribute der Klasse Sohn, also
s = 0 und
myf = null
1.2) Initialisierung der Oberklasse
1.2.1)
Standardinitialisierung der Attribute der Klasse Vater, also
v=0
1.2.2)Initialisierung der Attribute der Klasse Vater, also
v=Do.myprint("V0");
das bedeutet konkret: v=1
1.2.3) Aufruf des Konstruktors der Klasse Vater
1.3) Initialisierung der Attribute der Klasse Sohn, also
s=Do.myprint("S0");
myf=new Freundin(123);
1.4) Aufruf des Konstruktors der Klasse Sohn
2) Gibt es einen Link zu einer Website, in dem genau beschrieben wird,
wie dies allgemein funktioniert?
-----------------------------------------------------------------------
public class MainInitReihenfolge1 {
public static void main(String[] args){
Sohn myS= new Sohn(10,20);
}
}
class Sohn extends Vater{
public int s=Do.myprint("S0");
Freundin myf=new Freundin(123);
public Sohn(int pv, int ps){
super(ps);
s = ps;
}
}
class Vater{
public int v=Do.myprint("V0");
public Vater(int pv){
System.out.println("Konstruktor Vater v="+v);
v=pv;
System.out.println("Konstruktor Vater v="+v);
}
}
class Freundin{
public int f=Do.myprint("F0");;
public Freundin(int pf){
System.out.println("Konstruktor Freundin f="+f);
f=pf;
System.out.println("Konstruktor Freundin f="+f);
}
}
class Do{
public static int myprint(String ps){
System.out.println(ps);
return 1;
}
}
-----------------------------------------------------------------------
mfg
Ernst
In welcher Reighenfolge wird in Java ein Objekt initialisiert?
Die Attribute eines Objekt können z.B. bestehen aus:
- einfachen DatentypenAttributen
- Objekten (mit dem Datentyp einer Klasse)
außerdem kann es Attribute (und Methoden) erben
Beispiel: (komplettes Programm unten)
class Sohn extends Vater{
public int s=Do.myprint("S0");
Freundin myf=new Freundin(123);
public Sohn(int pv, int ps){
super(ps);
s = ps;
}
}
class MyTest extends MyVater {
private i = 12;
MyKlasse myk;
}
Frage:
I) Was passiert, wenn z.B. ein Objekt dieser Klasse Sohn angelegt
wird.
In welcher Reihenfolge werden die Attribute dieser Klasse wie initialisiert?
Meine Meinung ist folgende:
1)
1.1) Standardinitialisierung der Attribute der Klasse Sohn, also
s = 0 und
myf = null
1.2) Initialisierung der Oberklasse
1.2.1)
Standardinitialisierung der Attribute der Klasse Vater, also
v=0
1.2.2)Initialisierung der Attribute der Klasse Vater, also
v=Do.myprint("V0");
das bedeutet konkret: v=1
1.2.3) Aufruf des Konstruktors der Klasse Vater
1.3) Initialisierung der Attribute der Klasse Sohn, also
s=Do.myprint("S0");
myf=new Freundin(123);
1.4) Aufruf des Konstruktors der Klasse Sohn
2) Gibt es einen Link zu einer Website, in dem genau beschrieben wird,
wie dies allgemein funktioniert?
-----------------------------------------------------------------------
public class MainInitReihenfolge1 {
public static void main(String[] args){
Sohn myS= new Sohn(10,20);
}
}
class Sohn extends Vater{
public int s=Do.myprint("S0");
Freundin myf=new Freundin(123);
public Sohn(int pv, int ps){
super(ps);
s = ps;
}
}
class Vater{
public int v=Do.myprint("V0");
public Vater(int pv){
System.out.println("Konstruktor Vater v="+v);
v=pv;
System.out.println("Konstruktor Vater v="+v);
}
}
class Freundin{
public int f=Do.myprint("F0");;
public Freundin(int pf){
System.out.println("Konstruktor Freundin f="+f);
f=pf;
System.out.println("Konstruktor Freundin f="+f);
}
}
class Do{
public static int myprint(String ps){
System.out.println(ps);
return 1;
}
}
-----------------------------------------------------------------------
mfg
Ernst