Hirdetés

Aktív témák

  • lakisoft
    veterán

    Polimorfizmus
    Osztály:
    public class Szerelveny {

    protected int kocsikSzáma;
    protected boolean földAlatti;

    public Szerelveny(int kocsikSzáma) {
    this(kocsikSzáma, false);
    }

    public Szerelveny(int kocsikSzáma, boolean földAlatti) {
    this.kocsikSzáma = kocsikSzáma;
    this.földAlatti = földAlatti;
    System.out.println("Új szerelvény: " + this);
    }

    @Override
    public String toString() {
    return "szerelvény (" + kocsikSzáma + " kocsi, " + (földAlatti ? "földalatti" : "felszíni") + ")";
    }

    public Szerelveny összefűz(Szerelveny sz) {
    boolean b = földAlatti && sz.földAlatti;
    System.out.println("Sz + Sz: " + this + " + " + sz);
    return new Szerelveny(kocsikSzáma + sz.kocsikSzáma, b);
    }
    }

    Main osztály függvénye:
    Szerelveny szsz = new Szerelveny(3);
    Szerelveny szm = new MetroSzerelveny(4);

    System.out.println(szsz.összefűz(szm));

    Eredmény:

    // Első utasításra
    Új szerelvény: szerelvény (3 kocsi, felszíni)

    // Második utasításra
    Új szerelvény: metró (4 kocsi, földalatti)
    Új MetroSzerelveny: metró (4 kocsi, földalatti)

    // Harmadik utasításra
    Sz + Sz: szerelvény (3 kocsi, felszíni) + metró (4 kocsi, földalatti)
    Új szerelvény: szerelvény (7 kocsi, felszíni)
    szerelvény (7 kocsi, felszíni)

Aktív témák