1. #1
    devilution.be's Avatar
    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 Reply With Quote

  2. #2
    forloRn_'s Avatar
    Registered
    23/11/03
    Location
    Landeurp
    Posts
    1,791
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    10/17
    Quote Originally Posted by devilution.be View Post
    This quote is hidden because you are ignoring this member. Show
    Hey
    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 ? )
    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 Reply With Quote

  3. #3
    devilution.be's Avatar
    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 Reply With Quote

  4. #4
    forloRn_'s Avatar
    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.

    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"
    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).
    no votes   Reply With Quote Reply With Quote

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in