Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

A sobrescrita é válida?

import java.io.*;
    class Veiculo {
        protected void liga () throws IOException {}
    }
    class Carro extends Veiculo {
        public void liga() throws FileNotFoundException {}
    }

Marquei como não. Pois o que mudou de uma para outra foi o modificador de acesso e a Exception lançada.

Para sobrescrita válida teria que estar assim:

import java.io.*;
    class Veiculo {
        protected void liga () throws IOException {}
    }
    class Carro extends Veiculo {
        protected void liga() throws FileNotFoundException {}
    }
3 respostas

Oi Delmo, tudo bom?

O modificador de visibilidade não conta como critério de sobrescrita. Você pode alterar ele ao sobrescrever seus métodos sem problema de compilação =)

Então para uma sobrescrita válida: retorno nome(tipo arg1)

void imprime(int i);
solução!

Para ter certeza, rodei alguns testes aqui.

Você pode sobrescrever a visibilidade de um tipo mais fechado para um mais aberto. Por exemplo, de package private(default) para protected ou public ou então de protected para public.

Ou seja, na hora de sobrescrever os métodos você só precisa tomar cuidado pra escolher um modificador de visibilidade igual ou mais abrangente que o da classe pai =)

Então, realmente... o modificador de visibilidade é considerado na sobrescrita. É um bom tópico para ficar atento na certificação!