publicAluno(){System.out.println("Um aluno criado");//Testa o construtor}publicAluno(Stringn,longm,Stringe){this.nome=n;this.endereco=e;this.matricula=m;}//MetodospublicStringgetNome(Stringnome){returnnome;}publicvoidsetNome(Stringnome){this.nome=nome;System.out.println("Set usado");//Testa o método set}
}
Main.java
publicclassMain{publicstaticvoidmain(String[]args){Alunoa=newAluno();a.setNome(“Fulano”);System.out.println(a.getNome());//Nesta linha da erro [color=red] cannot be applied to ()[/color]}
publicclassAluno{//AtributosprivateStringnome;privatelongmatricula;privateStringendereco;publicAluno(){System.out.println("Um aluno criado");//Testa o construtor}publicAluno(Stringn,longm,Stringe){this.nome=n;this.endereco=e;this.matricula=m;}//MetodospublicStringgetNome(Stringnome){//#1 <==!! aqui esta o problemareturnnome;}publicvoidsetNome(Stringnome){this.nome=nome;System.out.println("Set usado");//Testa o método set}}
Main.java
publicclassMain{publicstaticvoidmain(String[]args){Alunoa=newAluno();a.setNome("Fulano");System.out.println(a.getNome());//Nesta linha da erro cannot be applied to ()}}
lendo o erro, getNome() não pode ser aplicado a () pq vc colocou no método como argumento uma string
altere o método getNome(String nome) conforma abaixo, no #1
publicStringgetNome(){//#1returnnome;}
marcoslogan
Olha, o método get serve para retornar algum valor, se tiver algum parâmetro de entrada no método, então você tem que fazer alguma operação com ele e mostrar o resultado. Por exemplo: Quando queremos realizar alguma pesquisa simplesmente teremos um método get que vai retornar uma lista de objetos. Mas o parâmetro de entrada vai ser do mesmo tipo da minha classe.
publicvoidsetNome(Stringnome){}//Método que vai setar o parâmetro de entrada ao atributo nome da sua classepublicStringgetNome(){}//Já o método getNome vai retornar uma string contendo o nome que você definiu no método setNome, repito se houver algum parâmetro de entrada no método getNome, significa que você terá que fazer alguma operação com ele.
pedroroxd
O método get não recebe parâmetro, apenas retorna a variável, ou o objeto
pedroroxd
PS: Se vc usar eclipse
Aperte Ctrl + 3 e digite ggas que é a abreviação de Generate Getters And Setters e selecione todos os getters e setters, que ele faz automaticamente…
O netbeans também faz, mas não sei qual é o atalho…
discorpio
Boa noite a todos.
pedroroxd:
PS: Se vc usar eclipse
Aperte Ctrl + 3 e digite ggas que é a abreviação de Generate Getters And Setters e selecione todos os getters e setters, que ele faz automaticamente…
O netbeans também faz, mas não sei qual é o atalho…
No NetBeans basta voce clicar com o botão direito do mouse em cima da variável (atributo) e na caixa popup escolher [color=blue]“Refatorar -> Encapsular campos” [/color]
Trebloc
discorpio:
Boa noite a todos.
pedroroxd:
PS: Se vc usar eclipse
Aperte Ctrl + 3 e digite ggas que é a abreviação de Generate Getters And Setters e selecione todos os getters e setters, que ele faz automaticamente…
O netbeans também faz, mas não sei qual é o atalho…
No NetBeans basta voce clicar com o botão direito do mouse em cima da variável (atributo) e na caixa popup escolher [color=blue]“Refatorar -> Encapsular campos” [/color]
No NetBeans você também pode clicar com o direito dentro do código, em uma linha vazia, ir em “Gerar código” e em “Getters e setters”.
pedroroxd
Obrigado, bom para exclarecer para o amigo dacruzaraujo…
Mas eu não uso netbeans =D
discorpio
Olá, sou eu de novo.
A via de regras de encapsulamento, realmente deve se evitar que o método get receba algum parâmetro, pois em Ingles, o verbo [color=blue]Get[/color], significa obter, pegar, apanhar e vários outros significados similares, voltando a regra de encapsulamento, ele realmente [color=blue]foi feito com o objetivo de apanhar valores de atributos encapsulados[/color] e não de atribuir valores aos atributos encapsulados, função este atribuída ao método Set, portanto não é aconselhável misturar as funções. [color=blue]Contudo, nada impede que o método Get receba algum parâmetro,[/color] desde que este parâmetro recebido seja processado e manipulado dentro do método Get, a fim de obter outro resultado diferente do que foi recebido.
discorpio
Olá, denovo aqui.
Trebloc:
No NetBeans você também pode clicar com o direito dentro do código, em uma linha vazia, ir em “Gerar código” e em “Getters e setters”. ;)
Obrigado Trebloc, por lembrar.
Na versão 6.8 do NetBeans que estou usando o [color=blue]“Gerar código”[/color] foi substituído por [color=blue]“Inserir código”[/color], porém eu prefiro utilizar o “Refatorar -> Encapsular campos”.
pedroroxd
Bom, nada impede o método get de receber parâmetro e o set de retornar algo…
Mas por convenção não é usado…
Tanto que quando vc manda a IDE fazer isso para você, o get retorna e o set seta…
Agora se vc quiser fazer isso pode, mas mude o nome do método (não deixe get)…
dacruzaraujo
Pessoal obrigado pelas dicas, pricipalmente ao Lavieri, foi só escrever o método sem o argumento.
Um abraço