Duvida sobre reescrita. [RESOLVIDO]

2 respostas
rickfrocha

Olá Pessoal! Tudo bom?

Gostaria de tirar uma dúvida sobre reescrita…

// Imaginem que tenho uma classe Pai:

class Pai{
    void teste(Pai x){};
}


//Tenho tambem uma classe filha :

class Filha extends Pai{
    void teste(Filha x){};
}

No exemplo passado, o metodo teste da classe filha sera uma sobrescrita ou sobrecarga? Fico em duvida devido ter a mesma assinatura, e o argumento ser uma derivacao do metodo original.

Desde ja obrigado. :smiley:

2 Respostas

ppro11

O que você está fazendo é uma sobrecarga de método, pois houve uma mudança de argumentos no método da Classe Filha!

// Imaginem que tenho uma classe Pai:  
  
class Pai{  
    
    void teste(Pai x){

    };  
}  
  
  
//Tenho tambem uma classe filha :  
  
class Filha extends Pai{  
    
    void teste(Filha x){ //mudança do tipo do argumento 

    };  
}

Para que houvesse um sobrescrita de método, um 1º lugar, deveria ter uma anotação @override acima da assinatura do método, para indicar que este método está sendo sobrescrito da Classe Pai (para efeito de legibilidade)

class Filha extends Pai {

	// sobrecarga de método
	void teste(Filha x) {

	}

	// método sobrescrito

	// @Override
	void teste(Pai x) {
		// TODO Auto-generated method stub
		super.teste(x);
	}
}
rickfrocha
ppro11:
O que você está fazendo é uma sobrecarga de método, pois houve uma mudança de argumentos no método da Classe Filha!
// Imaginem que tenho uma classe Pai:  
  
class Pai{  
    
    void teste(Pai x){

    };  
}  
  
  
//Tenho tambem uma classe filha :  
  
class Filha extends Pai{  
    
    void teste(Filha x){ //mudança do tipo do argumento 

    };  
}
Para que houvesse um sobrescrita de método, um 1º lugar, deveria ter uma anotação @override acima da assinatura do método, para indicar que este método está sendo sobrescrito da Classe Pai (para efeito de legibilidade)
class Filha extends Pai {

	// sobrecarga de método
	void teste(Filha x) {

	}

	// método sobrescrito

	// @Override
	void teste(Pai x) {
		// TODO Auto-generated method stub
		super.teste(x);
	}
}

Maravilha pedro, eu acho que agora consegui entender.

Muito obrigado.

abs

Criado 25 de janeiro de 2013
Ultima resposta 27 de jan. de 2013
Respostas 2
Participantes 2