import java.util.*;
class Veiculo {
public Veiculo() {
System.out.print("Veiculo ");
}
public void checkList() {
System.out.println("Veiculo.checkList");
}
public void adjust() {
System.out.println("Veiculo.adjust");
}
public void cleanup() {
System.out.println("Veiculo.cleanup");
}
}
class Automovel extends Veiculo {
public Automovel() {
System.out.println("Automovel");
}
public void checkList() {
System.out.println("Automovel.checkList");
}
public void adjust() {
System.out.println("Automovel.adjust");
}
public void cleanup() {
System.out.println("Automovel.cleanup");
}
}
class Bicicleta extends Veiculo {
public Bicicleta() {
System.out.println("Bicicleta");
}
public void checkList() {
System.out.println("Bicicleta.checkList");
}
public void adjust() {
System.out.println("Bicicleta.adjust");
}
public void cleanup() {
System.out.println("Bicicleta.cleanup");
}
}
public class Oficina {
Random r = new Random();
public Veiculo proximo() {
Veiculo v;
int code = r.nextInt();
if (code%2 == 0)
v = new Automovel();
else
v = new Bicicleta();
return v;
}
public void manter(Veiculo v) {
v.checkList();
v.adjust();
v.cleanup();
}
public static void main(String[] args) {
Oficina o = new Oficina();
Veiculo v;
for (int i=0; i<4; ++i) {
v = o.proximo();
o.manter(v);
}
}
}
Código fonte