Polimorfismo Java

6 respostas
T

Boa tarde,

Está correto considerar esse método como polimorfismo?

//MÉTODO LOCALIZAR FUNCIONARIO

public boolean localizar(String cFuncionario, String nomeProcurado) {

try {

BufferedReader br = new BufferedReader(new FileReader(cFuncionario));

int cont = 0;

while (br.ready()) {

String linha = br.readLine();

String arrayNome[] = linha.split("&");
if (arrayNome[0].equalsIgnoreCase(nomeProcurado)) {
				cont++;
			}

		}
		br.close();

		if (cont == 0) {
			this.msErro = "Funcionário não localizado";
			return false;
		}

	} catch (Exception e) {
		
		this.msErro = "Erro de Exception:" + e.toString();
	}
	return true;

}
// MÉTODO LOCALIZAR CADASTRO DE TODAS AS FICHAS (FUNCIONARIO E CLIENTE)

public boolean localizar(String cFuncionario, String cCliente, String nomeProcurado) {

try {

BufferedReader brF = new BufferedReader(new FileReader(cFuncionario));

BufferedReader brC = new BufferedReader(new FileReader(cCliente));

int cont = 0;

while (brF.ready()) {

String linha = brF.readLine();

String arrayNome[] = linha.split("&");
if (arrayNome[0].equalsIgnoreCase(nomeProcurado)) {
				cont++;
			}

		}
		brF.close();
		while (brC.ready()) {
			String linha = brC.readLine();
			String arrayNome[] = linha.split("&");

			if (arrayNome[0].equalsIgnoreCase(nomeProcurado)) {
				cont++;
			}

		}
		brC.close();

		if (cont == 0) {
			this.msErro = "Clinte não localizado";
			return false;
		}

	} catch (Exception e) {
		
		this.msErro = "Erro de Exception:" + e.toString();
	}
	return true;

}

6 Respostas

J

Não, você está confundindo polimorfismo com overloading.

No polimorfismo você tem classes com implementações diferentes de um método mantendo a mesma assinatura, herdado de uma superclasse ou implementados a partir de uma interface. Nesse caso a jvm sabe chamar o método correto de acordo com a classe efetivamente instanciada.

Por exemplo, suponhamos que você tenha uma superclasse Funcionario com o método calcSalario, a partir dela você pode criar uma classe FuncSalFixo, onde o salário é calculado sobre um valor fixo por mês; e outra clase FuncSalComissao, onde além do salário fixo haveria um comissão pelas vendas, mas ambos os métodos recebendo os mesmos parâmetros, portanto com a mesma assinatura, e sendo instanciados a partir de Funcionario, para generalizar o método e para que o polimorfismo ocorra.

No começo é de fato difícil diferenciar polimorfismo, de overloading e overriding de metódos.

T

Entendi! Obrigado .

davidbuzatto

Overloading é polimorfismo de sobrecarga. Existem diversos tipos de polimorfismo… Os principais são, além do já citado, polimorfismo de herança/subtipo/inclusão, polimorfismo de coerção (cast) e polimorfismo paramétrico (genéricos em Java, templates em C++).

T

então está correto considera esses metodos como polimorfismo ?

davidbuzatto

Sim, polimorfismo de sobrecarga.

T

Obrigado !

Criado 24 de setembro de 2022
Ultima resposta 25 de set. de 2022
Respostas 6
Participantes 3