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?