Rzutowanie w górę

0

"(...). Stwórz obiekt klasy Frog i zrzutuj go na Amphibian - wykaż, że wszystkie metody nadal działają."

Napisany poniżej kod nie działa - niekompatybilne typy:

class Amphibian {
    public int i;
    public void create() {
        System.out.println("Gad stworzony");
        i=1;
    }
}

class Frog extends Amphibian {
    public void die() {
        System.out.println("Gad zlikwidowany");
        i=0;
    }
}

public class A {
    public static void main(String[] args) {
        Frog f = new Frog();
        f = new Amphibian();
    }
}

Co robię nie tak?

0

nie rzutowales tylko tworzyles nowy obiekt

Amphibian f2 = (Amphibian) f;

cos takiego zamiast 2 lini ale to i tak bez sensu bo teraz f2 jest Frog ale jest zrzutowany na Amphibian i zeby wywolac metode np. die musisz znow zrzutowac na Frog..

0

Chodzi pewnie o coś takiego:

class Amphibian {
    public void foo() {
        System.out.println("Amphibian");
    }
}

class Frog extends Amphibian {
    public void foo() {
        System.out.println("Frog");
    }
}

public class A {
    public static void main(String[] args) {
        Amphibian a = new Frog(); //rzutowanie jest automatyczne
        a.foo(); //wypisze Frog, nie Amphibian
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1