Cześć.
Jestem zupełnie początkujący i mam problem, którego nijak nie mogę rozwiązać, a może i zrozumieć.
Mam prosty kod, który tylko wyświetla komunikaty:
import java.util.*;
import java.lang.*;
import java.io.*;
interface Vehicle {
void run();
default void speedUp() {
System.out.println(getClass().getName() + " acceleration...");
System.out.println();
}
}
class Car implements Vehicle {
public void run() {
System.out.println("Go, Car, go! ;)");
}
}
class Motorbike implements Vehicle {
public void run() {
System.out.println("Go, Motorbike, go! ;)");
}
}
class Application {
public static void main(String args[]) {
Vehicle car = new Car();
car.run();
car.speedUp();
Vehicle motorbike = new Motorbike();
motorbike.run();
motorbike.speedUp();
}
}
Chciałbym każde wywołania metod run() i speedUp() dla odpowiednich obiektów (obecnie car i motorbike) zamienić na wywołanie jednej metody, np. vehicle() umieszczonej bezpośrednio w klasie Application.
Metoda vehicle() może mieć np. następujący kod:
public void vehicle(Vehicle vehicle) {
vehicle.run();
vehicle.speedUp();
}
Ale wtedy wywołanie car.vehicle(car) nie działa.
Próbowałem na różne sposoby i nic nie mogę wymyślić. Wiem, że konieczne jest określenie, z jakiego obiektu tamte dwie metody mają być wywołane.
Jak przekazać nazwę (obiekt) car, motorbike i ew. inne do metody vehicle(), żeby poprawnie wywołała ona metody run() i speedUp() dla odpowiednich obiektów?