Estou com uma duvida sobre um método do qual eu passo como parâmetro o nome do atributo que quero modificar e o novo valor. O nome do atributo é String mas o novo valor pode ser String, double ou int.
Eu pensei em fazer com switch, receber ambos como String e converter dependendo de qual case, mas queria saber se existe uma maneira mais “bonita”, porque a minha classe tem cerca de 11 atributos, e fazer 11 case’s não é tão legal e também tem a questão de quando são 2 ou mais atributos de mesmo tipo, como o nome e a corOlhos ambos String.
Uma classe java jamais permitirá que você tenha dois atributos com mesmo nome, independente de seu tipo. Você nunca verá isso: public class Exemplo{ int x; String x;//Só um atributo pode ter nome x }
Já com métodos, a história é um pouco diferente.
Você pode ter métodos com mesmo nome e até mesmo com mesmo tipo de retorno, DESDE QUE jamais tenha a mesma assinatura. Como assim?
Veja o que não pode: public class ExemploNaoPode{ public void metodo(){} public int metodo(){}//Qual dos dois a JVM vai chamar quando precisar? }
Outro exemplo: public class ExemploNaoPode2{ public String saudacao(String nome) {} public void saudacao(String nome){}//Mesma coisa, qual chamar? }
Agora, você pode sobrecarregar métodos.
Isto é, pode criar métodos com mesmo nome, tipo de retorno igual ou diferente, mas com assinaturas distintas: public class Sobrecarga{ public String saudacao(String nome){ return "Olá, " + nome;} public void saudacao(String nome, String msg) { System.out.println(msg + nome); } }
Note que, na classe Sobrecarga, você tem dois métodos com mesmo nome (saudacao), porém, cada um recebe um número distinto de parâmetros. Isso é sobrecarga.
Outro exemplo: public class Sobrecarga2{ public void teste(String nome, int valor){} public void teste(String nome, String valor){} }
Perceba que a classe Sobrecarga2 tem 2 métodos com mesmo nome (teste) e com mesmo número de parâmetros (2). O que os difere é o tipo dos parâmetros.
Entendeu?
A sobrecarga de métodos permite que existam métodos com mesmo nome, desde que possuam parâmetros diferentes em número ou em tipo (isso também se aplica à ordem dos parâmetros).
Lógico que você pode receber tudo em um único método que aceite duas String, mas vai de ti fazer desta ou daquela forma.
L
lvbarbosa1 like
Sobrecarga e Sobrescrita são assuntos de arrancar os cabelos no começo, mas logo tudo fica mais claro. Funciona bem como o @drsmachado falou: sobrecarga acontece quando você escreve um método com mesmo nome, mas com parâmetros diferentes. Vou deixar aqui duas perguntas interessantes a respeito de sobrecarga, para que você dê uma pesquisada (se quiser).