Keresés

Új hozzászólás Aktív témák

  • Lacces

    őstag

    válasz Lacces #2309 üzenetére

    Picit továbbhaladtam a példában. Elég érdekes amit írt, de nekem kérdőjel maradt benne.

    Van ez a két sor:

    kk = vv;
    System.out.println(kk.plusz(new Valos(9)).toString());

    Az első sor még ok, hogy itt dinamikus típus lesz, Komplex deklarált, és valós.

    Viszont a második sornál a magyarázatot a példában nem értettem meg, hogy akkor most mi va...

    kk dinamikus típus lesz. és meghívjuk a plusz metódust, amelynek a paramétere valós.

    public Komplex plusz(Komplex k){ // Komplex osztályban
    System.out.println("K + K: "+toString() +" + " + k.toString());
    return new Komplex(re+k.re, im+k.im);
    }
    public Komplex plusz(Komplex k){ // Valos osztályban
    System.out.println("V + K: "+toString() + " + " + k.toString());
    return new Komplex(re+k.re, k.im);

    [I]Az eredmény egyik sora: V + K: (7.8) + (9.0) [/I]lesz
    }
    public Valos plusz(Valos v){ // Valos osztályban
    System.out.println("V + V "+toString()+ " + " + v.toString());
    return new Valos(re+v.re);

    A magyarázat olyan, hogy dinamikus kötést alkalmaz. Ez rendben van, de miért?

    1.Azért mert kk Komplex deklarált, de Valos Konstruktor hívás van, ezért egyből a Valos osztályból keresi hozzá a plusz metódust?
    2. Vagy azért, mert Komplex osztályban nincs plusz() metódus amelynek a paraméter Valos szám!, és ezért a gyermek osztályban keres hozzá!

    Most ilyenkor egyből megy a deklarált osztályba, vagy abba az osztályba megy a fordító, ahol megvan híva az objektum konstruktora? :R

Új hozzászólás Aktív témák