public int escrever( int x )
{
System.out.println( "Metodo escrever2 " + getClass() );
return 1;
}
Ele funciona. Por que isso ? A assinatura do método, (me digam se estiver errado), não seria o seu [tipo de acesso][tipo de retorno] nome( parametros), ou sua assinatura seria somente os seus parametros fazendo com isso que não se possa alterar o método. Mas isso também não seria um overload ? Por que a subclasse já teria o método, herdado da superclasse, e com esse novo método com tipo de retorno String ele seria outro método.
nos dois primeiros casos você estava fazendo um overriding, e nos overriding o retorno deve ser IGUAL.
no segundo caso quando vc colocou um parâmetro, você não está mais fazendo um overriding e sim um overload, pois a assinatura do método esta diferente, devio a subclasse ter um parametro
E como eu faria pra ter um método em minha subclasse que fosse mais ou menos assim
public String escrever() ?
A assinatura do método só é compreendida pelos parâmetros dele é ?
Eu não posso ter uma sobrecarga de métodos com o mesmo nome não ?
Tentei colocar a linha acima na minha superclasse e também não pude.
[quote=“JBoy__”]E como eu faria pra ter um método em minha subclasse que fosse mais ou menos assim
public String escrever() ?
A assinatura do método só é compreendida pelos parâmetros dele é ?
Eu não posso ter uma sobrecarga de métodos com o mesmo nome não ?
Tentei colocar a linha acima na minha superclasse e também não pude.[/quote]
Ou você muda o nome do método (na minha opinião, nesse caso seria o mais lógico) ou coloca algum argumento nele.
Para fazer override (sobrescrita), o nome do método, os argumentos e o tipo de retorno DEVEM ser iguais.
Já em overload (sobrecarga), o tipo de um argumento ou a quantidade de argumentos DEVE ser diferente, o retorno não faz diferença neste caso.