Takie jest rozwiązanie:
public static void printMainInfo(Object object) {
if (object instanceof Drawable)
((Drawable) object).draw();
if (object instanceof Movable)
((Movable) object).move();
}
Czemu potrzebne jest rzutowanie / konwersja zawężająca?
Czemu jeśli jest
public static void printMainInfo(Object object) {
if (object instanceof Drawable)
object.draw();
if (object instanceof Movable)
object.move();
}
to object nie ma dostępu do tych metod? Przecież wywołując w main metodę printMainInfo(), przesyłamy zmienne drawable typu Drawable i movable typu Movable - a mimo to musimy jest rzutować ponownie na te typy?