BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
E o vini godoy uma vez enviou um link de um tutorial explicando o uso de duas instâncias (new BufferedReader(new InputStreamReader(System.in)), alguêm sabe algum tutorial ensinando?
Em linguagens Orientada a Objetos, Override significa sobrescrita, enquanto que Overload signifca sobrecarga.
A finalidade do @Override no java é nada mais nada menos que um diretiva de compilação, ou seja, ela orienta o compilador para alocação de memória, que a partir daquela linha de comando onde se encontra o “@Override”, logo a seguir tem um método que deverá ser sobrescrito, ou seja, deverá ser substituto do método com a mesma assinatura e nome da super classe. Além disso, orienta também o desenvolvedor de aquele método já foi escrito na super classe.
A diretiva de Overload ainda não existe no Java, porém este conceito no java também existe e é muito utilizado, onde métodos com o mesmo nome porém com assinaturas diferentes são sobrecarregados,
[code]public class Pai {
public void fazQualquerCoisa() {
System.out.println(“Qualquer coisa”);
}
}
public class Filho extends {
public void fezQualquerCoisa() {
System.out.println(“Qualquer outra coisa”);
}
}[/code]
Pergunta: Quantos métodos tem a classe filha?
2 métodos. O método fazQualquerCoisa() e o fezQualquerCoisa(). Agora, o segundo caso pode ter sido um erro de digitação e, como você pode ver, essa é uma sintaxe perfeitamente válida em Java para se criar 2 métodos. O compilador não tem como te informar isso, pois ele não tem como saber se são ou não dois métodos diferentes.
A diretiva @Override torna explícito ao compilador que sua intenção era substituir o método da classe pai, e não criar um novo método. Se você escrever @Override sobre o método fezQualquerCoisa(), o compilador irá gerar um erro, dizendo que o método fezQualquerCoisa não existe na classe pai. Assim, você poderá corrigir o erro de digitação.
Note que essa diretiva é especialmente importante caso você resolva alterar o nome de um método no pai. O compilador gerará erro automaticamente em todas as classes filhas, evitando que você esqueça de alterar o nome do método em uma delas.