Problemas com herança, polimorfismo, interface e afins

Pessoal tenho um trabalho da faculdade para fazer, esse ai abaixo,
fiz tudo, mas não tá compilando, não consigo achar os erros, será que alguém poderia dar uma força?
fico muito grato, abraços

meus códigos eu anexei no post.

projeto:

Você foi convidado a implementar um programa em JAVA para controle de frotas. A frota pode ser formada por CARROS, CAMINHOES e MOTOS. O seu programa deve ser expansível e, portanto, ele deverá ser capaz de incorporar outros tipos de veículos (mesmo que ainda nao existam) utilizando as funcionalidades de POO.

Inicie programando uma classe abstrata auto, que possa conter atributos
e métodos comuns a todas as 3 classes derivadas a serem também implementadas: carros, caminhoes e motos.

Dentre os atributos comuns, temos: placa, cor, ano fabricacao, proprietario.Dentre os métodos comuns, temos: os métodos Get…() e Set…() para os atributos acima e o método Imprime().
Defina métodos abstrato, cuja implementação é particular para cada
categoria de veículo: Dirigir() - instrucoes de como dirigir o veículo - e
Revisar() - regras para fazer manutencão.

Defina um conjunto de atributos que você julgar necessários para melhor
especificar cada uma das classes derivadas. (por exemplo, a classe caminhao pode ter um atributo chamado carga, que define quantos quilos é capaz de transportar.
Sobreescreva os métodos Imprime() definido na classe base. Implemente os construtores, etc…
Implemente os métodos abstratos. Aqui, o corpo do método consiste apenas de uma descrição textual de como o automóvel é dirigido (dirigir) ou sofre manutenção (revisar), acompanhado da placa do veículo e do
proprietário …

Suponha que o seu sistema de frota tenha que fazer o controle de motoristas tambem. O motorista é uma classe composta de nome, idade, e nro. Suponha que o motorista, se tiver acima de 35 anos, deve passar por uma “revisao” também. Neste sentido, podemos dizer que ambos automoveis e motoristas sao máquinas que deve passar por manutencoes periódicas. Esrcreva a classe motorista e alguns métodos set e get para os principais atributos. Defina uma interface chamada Maquina que especifica um método Checkup(). A partir dela, faça com que tanto o checkup (revisao) de um automóvel quanto de um motorista seja implementado e invocado nestas duas classes.

Implemente cada classe em um arquivo separadamente. A interface idem.

Por fim, Implemente uma classe para testar o seu programa. Instancie um vetor de objetos do tipo VEICULO e atribua a ele objetos de cada tipo de veículo. Teste os métodos implementados chamando polimorficamente o vetor de veículos. Faça o mesmo por meio da interface Maquina

Observe que no seu código que Autoobjetos é do tipo Maquina e que a interface Maquina não implementa o método imprime.

[code]public class MaquinaInterfaceTeste {
public static void main ( String args[] ) {
//cria array Auto de quatro elementos
Maquina Autoobjetos[] = new Maquina[4];

	//cria objetos
	Carros carros = new Carros( "azul", "2002", "Carlos Eduardo", 1234, 4);
	Caminhoes caminhoes = new Caminhoes( "verde","1999","Fabio Rocha", 5232, 1000, 6 );
	Motos motos = new Motos( "branco", "2006", "Patricia Kavalco", 258, 4);
	Motorista motorista = new Motorista( "Jhonata", "Emerick", 25, 498 );
	
	//inicializa a Array com os objetos
	Autoobjetos[0] = carros; 
	Autoobjetos[1] = caminhoes;
	Autoobjetos[2] = motos;
	Autoobjetos[4] = motorista;
	
	System.out.println("Motorista e Auto processados polimorficamentes: \n");
	
	//processa genericamente cada elemento do array Autoobjetos
	for ( Maquina currentMaquina: Autoobjetos) {
		//gera a saida de Current Maquina
		System.out.printf("%s\n",currentMaquina.Imprime());
	}// final do for
}//fim do main

}//fim da classe teste[/code]

fw

Ps: prefira definir vetores/matrizes em chama desta forma:

Maquina[] Autoobjetos = new Maquina[4];