Generic types

import java.util.*;

class Vehicle {
    public void test() {
        System.out.println("test " + this);
    }
}

class Car extends Vehicle { }

class Truck extends Vehicle { }

var list = new ArrayList<Vehicle>();
var vehicle = new Vehicle();
var car = new Car();
var truck = new Truck();

list.add(vehicle);
list.add(car);
list.add(truck);

for (var curVehicle : list) {
    curVehicle.test();
}