Construtores

23 respostas
L

Boa tarde,

Tenho uma dúvida!

Sempre que eu declarar um Método construtor tenho que colocar o Método GET e SET também?

23 Respostas

Rodrigo_Void

Não.
Uma coisa não tem nada a ver com a outra.

L

Rodrigo,

Me tira outra dúvida, por quando eu crio o meto eu tenho que colocar no argumento um apelido.

ex. public class Pessoa {
private String nome;

public Pessoa ( String nm ){

nome = nm;

}

}

Rodrigo_Void

Correto seria:

public Pessoa ( String nome){
    this.nome = nome;
}
M

O “apelido” também chamado de parâmetro no método é uma variável que quando você chamar o método, terá de ser passada.

Ex:

public void setNome(String nome) {
		this.nome = nome;
 //variavel da classe x variavel do método
	}	
	
	setNome("Luciano");
L

A forma que eu fiz esta incorreta? Pois estou aprendendo dessa forma.

public Pessoa ( String nm ){

nome = nm;

}
M

Está correto, existe modos e modos, isso você aprende com o tempo!

L

Legal, entendi! Vou praticar mais e pesquisar.

darlan_machado

Sobre construtores no java:

  • Você pode criar nenhum, um ou mais construtores em cada classe que desenvolva.
  • Se não criar nenhum, o compilador se encarregará de adicionar um default
  • Se criar um, o compilador não insere nenhum.
  • Construtores nunca terão tipos de retorno e sempre terão o mesmo nome da classe.
  • Havendo mais de um construtor, todos devem ter parâmetros diferentes (seja tipo do parâmetro ou quantidade)
  • Preferencialmente, definir nomes de parâmetros seguindo a especificação java beans.
A

Desculpa Rodrigo sei que não tenho nada a haver com a pergunta porém me intrigou a resposta. Que não esclareceu nada, é interessante que a pergunta tenha sido respondida o que não vi em sua resposta. Porque não respondo porque não sei.

darlan_machado

Se é sobre esta resposta

O @Rodrigo_Void está se referindo a padrões de nomes e boas práticas. Nomes de classes, atributos, métodos e classes devem ser, sempre, claros e auto explicativos.
Ele não quis dizer que o nome da variável vai impedir o funcionamento, apenas, que, por razões específicas, o nome dela seria melhor caso não fosse “nm”. O que “nm” diz para ti, caso você não conheça o contexto da questão? Nome? No momento? Nada mais? Namastê? Entendeu?

L

darlan,

Então é melhor eu sempre usar da forma que o Rodrigo colocou?

Rodrigo_Void

Por exemplo, se vc mandar a IDE gerar os métodos, é neste padrão que o será feito.

darlan_machado

Eu não sei como você está estudando, nem que material de apoio usa, mas, sim.
A razão mais importante é que, pense que você tem inúmeros parâmetros, como vai saber qual é qual?

M

darlan,

Então é melhor eu sempre usar da forma que o Rodrigo colocou?

Serial interessante você utilizar, até por ser uma boa prática, isso no futuro pode fazer a diferença.

Pesquise sobre:

  • Boas praticas em JAVA
L

Estou fazendo um curso na IMPACTA, mas estou aprendendo de outra forma, da forma que coloquei no post.

darlan_machado

Pode ter sido opção de quem está ministrando o curso. Talvez para diferenciar a variável do parâmetro, enfim. É possível usar como você aprendeu? Sim. É correto? Se estamos falando de boas práticas, não.

Rodrigo_Void

Nos meus cursos as vezes tbm uso nome do parâmetro diferente pq na fase onde ainda se aprende algoritmo Java é mais fácil entender assim doq ter aprendido que n se pode ter variáveis de nome igual, mas pode ter um parâmetro de nome igual ao de uma var e que na verdade o parâmetro NÃO PRECISA ter o mesmo nome, é só um padrão recomendado e ainda entender o conceito do THIS.

L

Estava Olhando meu material e observei que a explicação é a mesma que vocês colocaram aqui no post.

guilhermebhte

Além disso outras pessoas podem dar manutenção no código. Ai você sabe o que é nm, outras pessoas não.

darlan_machado

Perfeito, @guilhermebhte.
Na verdade, boa parte do que trata o clean code é sobre isso: código auto explicativo (inclusive, código que precisa de comentário para explicar é código que está errado).

L

darlan, consigo falar com você pelo whats?

guilhermebhte

Sim. Concordo. Em janeiro/fevereiro deste ano, vivi isto e não é bom não.

L

Criei essa classe da forma que vcs foram falando e rodou perfeitamente.

package CadastroPessoa;

public class Cadastro {

private String nome;

private int idade;

// private String cpf;
public Cadastro (String nome, int idade){

this.nome = nome;

this.idade = idade;

}
public String getNome(){

return nome;

}
public void setnome(String nome){

this.nome = nome;

}
public int getIdade (){

return idade;

}

}
Criado 6 de junho de 2018
Ultima resposta 7 de jun. de 2018
Respostas 23
Participantes 6