Witam, przerabiając sobie zadania z jednej z książek doszedłem do takiego zadania:
Utwórz klasę abstrakcyjną bez żadnych metod. Wyprowadź z niej klasę pochodną i uzupełnij ją o metodę. Utwórz metodę statyczną, która przyjmuje referencję klasy bazowej, rzutuje ją w dół na typ klasy pochodnej i wywołuje metodę klasy pochodnej.
Zademonstruj działanie całości w metodzie main(), a potem uzupełnij o deklarację metody w klasie bazowej słowem abstract, eliminując tym samym potrzebe rzutowania.
Z tego co wiem nie można stworzyć instancji obiektu klasy abstrakcyjnej, a tutaj każą zrobić metodę, której parametrem jest referencja do klasy abstrakcyjnej.
Jest coś takiego możliwe?
Do tego zadania uklepałem coś takiego:
public abstract class KlasaAbstrakcyjna {
public abstract void print();
}
public class KlasaPochodna extends KlasaAbstrakcyjna {
public void print(){
System.out.println("Jestem metoda klasy pochodnej");
}
public static void ref(KlasaAbstrakcyjna s){
KlasaPochodna k = (KlasaPochodna)s;
k.print();
}
}
Zrobiłem to jedynie tworząc referencje do klasypochodnej(Bo w tym wpadku każda klasaPochodna jest klasąAbstrakcyjną).
No ale to jest referencja do obiektu z typem klasy pochodnej a nie klasy Abstrakcyjnej.