Thread: Kleine vraagjes thread
-
17-01-2012, 13:01 #1Member
- Registered
- 26/06/11
- Location
- Zeebrugge
- Posts
- 1,097
- iTrader
- 0
- Mentioned
- 0 Post(s)
- Reputation
- 0/26
Kleine vraagjes thread
Hey

Ik heb een simpel vraagje over Java, mss zijn er nog mensen die met kleine vragen zitten, dan kunnen ze eventueel allemaal in deze thread staan.
Vraag:
KlasseX x = new KlasseY();
KlasseX extends KlasseY
Is x een instantie van KlasseX of van KlasseY (voert hij eerst de Y constructor uit en dan de X constructor ? )Deep in the heart where the mysteries emerge.no votes
Reply With Quote
-
-
17-01-2012, 13:45 #2Member
- Registered
- 23/11/03
- Location
- Landeurp
- Posts
- 1,791
- iTrader
- 0
- Mentioned
- 0 Post(s)
- Reputation
- 10/17
Dat gaat niet compileren. Het moet zijn: KlasseY extends KlasseX. En in principe is new KlasseY() dan een instantie van beide.
De constructor van een base class wordt uitgevoerd vóór die van de derived. Je kunt dat toch gemakkelijk checken door no-arg constructors te schrijven met een print statement?no votes
Reply With Quote
-
17-01-2012, 14:48 #3Member
- Registered
- 26/06/11
- Location
- Zeebrugge
- Posts
- 1,097
- iTrader
- 0
- Mentioned
- 0 Post(s)
- Reputation
- 0/26
Ah merci je hebt me de info gegeven die ik nodig heb ^^
Mijn voorbeeld was fout.
Het moest zijn :
KlasseY x = new KlasseX()
KlasseX extends KlasseY.
Als je dan een methode oproept die in beide klassen staan, maar elk hun eigen output hebben, gaat hij dan beide outputs weergeven of enkel 1 van de twee. En wat ik eigenlijk wil weten, is waarom juist. Ik kan het zelf uitvoeren en zien wat het doet, maar dan weet ik nog altijd niet waarom
Ik wil het goed snappen.
Bedankt alvast.Deep in the heart where the mysteries emerge.no votes
Reply With Quote
-
17-01-2012, 15:31 #4Member
- Registered
- 23/11/03
- Location
- Landeurp
- Posts
- 1,791
- iTrader
- 0
- Mentioned
- 0 Post(s)
- Reputation
- 10/17
Je gaat maar de output zien van één van beide klassen, en welke dat is, hangt af van het daadwerkelijke type van het object at runtime. Dat is gewoon een techniek die ze in het OO-wereldje polymorfisme of dynamic binding of nog wat anders noemen.
Wat er voor de naam van de variabelen y, x en uhoh staat is het type at compile time. Hetgeen je daadwerkelijk instantieert met de constructors is het echte type (het type at runtime).Code:class Y { public void f() { System.out.println("Y"); } } class X extends Y { public void f() { System.out.println("X"); } } Y y = new Y(); X x = new X(); Y uhoh = new X(); // elke X is een Y y.f(); // print "Y" x.f(); // print "X" uhoh.f(); // print ook "X"no votes
Reply With Quote

