Boa tarde, galera, quando encerro meu programa ele deveria mostrar o carro mais rápido e o mais devagar além de mostrar qual o tipo do carro, mas sempre mostra que é do tipo comum, poderiam me ajudar?

package Semana09;

import java.util.ArrayList;
import java.util.Scanner;

public class Q6 {
public static void main(String[] args) {
Scanner ler = new Scanner(System.in);
Carro c = null;

	ArrayList <Carro> carros = new ArrayList <Carro>();
	System.out.println("Velocidade máxima permitida:");
	float veloMax = ler.nextFloat();
	
	int opc = 0;
	
	while(opc!=6){
		
		System.out.println("1-Incluir carro"+"\n2-Incluir carro esportivo"+"\n3-Acelerar"+"\n4-frear"+
							"\n5-Mostrar velocidade de um carro"+"\n6-Encerrar programa");
		opc = ler.nextInt();
		
		if(opc==1 || opc==2) {
			System.out.println("Velocidade atual do carro:");
			float veloAtual = ler.nextFloat();
			if(opc==1) {
				c = new Carro();
				c.setVelocidade(veloAtual);
				carros.add(c);
			}else {
				c = new CarroEsportivo();
				c.setVelocidade(veloAtual);
				carros.add(c);
			}
		}else if(opc==3) {
			for (Carro car : carros) {
				car.acelerar();
				if(car.getVelocidade()>veloMax) {
					System.out.println("Carro removido por ultrapassar velocidade permitida \nVelocidade: "+car.getVelocidade());
					carros.remove(car);	
					break;
				}
				
			}
		}else if(opc==4) {
			for (Carro car : carros) {
				car.frear();
				if(car.getVelocidade()==0) {
					carros.remove(car);
					System.out.println("Carro removido por atingir atingir velocidade zero \nVelocidade: "+car.getVelocidade());
				}
				
			}
		}else if(opc==5) {
			System.out.println("Posição do carro:");
			int pos = ler.nextInt();
			System.out.println("Velocidade: "+ carros.get(pos).getVelocidade());
		}
	}
		float veloMaior = Integer.MIN_VALUE;
		float veloMenor = Integer.MAX_VALUE;
		String tipo = "";
		for (Carro car : carros) {
			if(car.getVelocidade()>veloMaior) {
				veloMaior = car.getVelocidade();
				if(car instanceof Carro) {
					tipo = "Carro comum";
				}else if(car instanceof CarroEsportivo){
					tipo = "Carro Esportivo";
				}
			}
				if(car.getVelocidade()<veloMenor) {
					veloMenor = car.getVelocidade();
					if(car instanceof Carro) {
						tipo = "Carro comum";
					}else if(car instanceof CarroEsportivo){
						tipo = "Carro Esportivo";
					}
				}	
			
		}
		System.out.println(tipo+" Mais rápido: "+ veloMaior+
							"\n"+tipo+" Mais devagar: "+veloMenor);
		
	
}

}

Posta o fonte das classes Carro e CarroEsportivo

package Semana09;

public class Carro {
private float velocidade;

public void acelerar() {
	velocidade += (10*velocidade)/100;
}
public void frear() {
	 
	velocidade -= (float) (10*velocidade)/100;
	if(velocidade<0) {
		velocidade = 0;
	}
	
}

public float getVelocidade() {
	return velocidade;
}

public void setVelocidade(float velocidade) {
	this.velocidade = velocidade;
}

}

package Semana09;

public class CarroEsportivo extends Carro{

public void acelerar() {
	setVelocidade((float) getVelocidade()+(20*getVelocidade())/100);
}

}