Pra que serv o metodo set e get?

Bom pessoal estou com uma duvida aki, pq o livro que estou lendo não estar me ajudando muito a entender não e se vcs soberem de uma apostilha que explica bem eu agradeço vcs.Pra que exatamente serv os metodos get e set, tenta colocar um exemplo facil de entender ai se poderem por favor.
Obrigado vcs

Uma dica: baixe as apostilas da Caelum, que estão em

De qualquer maneira, “set” e “get” são métodos “burocráticos” que fazem parte do padrão Java de fazer as coisas. Ou seja, em vez de você trabalhar diretamente com os campos:

public class Cliente {
    public String nome;
    public String endereco;
}
...
Cliente cli = new Cliente();
cli.nome = "João";
cli.endereco = "R dos Bobos, 0";
String nomeDoCliente = cli.nome;
String enderecoDoCliente = cli.endereco;

você põe uma burocracia no meio que são os métodos “set” e “get”.

A idéia é que em vez de mexer diretamente com os campos, você usa um intermediário (um “atravessador”) que são responsáveis por mexer com os campos.

Esse “atravessador” pode simplesmente repassar (ou seja, não cobra imposto, nem comissão, nem dízimo, nem nada), ou então fazer mais alguma coisa com o valor do campo. Por exemplo, ele pode checar se o valor do campo é válido ou não.

Vou dar um exemplo com os atravessadores, perdão, com o método “get” e “set”, que não estão cobrando nada.

public class Cliente {
    private String nome;
    private String endereco;
    public String getNome() { return nome; }
    public String getEndereco() { return endereco; }
    public void setNome (String valor) { nome = valor; }
    public void setEndereco (String valor) { endereco = valor; }
}
...
Cliente cli = new Cliente();
cli.nome = "João"; // dá erro de compilação - você não pode mexer diretamente em um campo "private"
cli.setNome ("João"); // funciona
cli.endereco = "R dos Bobos, 0"; // dá erro de compilação
cli.setEndereco ("R dos Bobos, 0"); // funciona
String nomeDoCliente = cli.nome; // dá erro
String nomeDoCliente = cli.getNome(); // funciona
String enderecoDoCliente = cli.endereco; // dá erro
String enderecoDoCliente = cli.getEndereco(); // funciona

Isso não é mais lento? Na verdade normalmente não é, porque o Java otimiza isso para você.

Agora vou fazer a mesma coisa, mas com um “setter” que vê se o nome não é vazio.

    public void setNome (String valor) { 
        if (valor == null || valor.trim().length() == 0) // valor vazio
            throw new IllegalArgumentException ("Pô, meu, o nome não pode ser vazio!");
        else
            nome = valor; // o valor não é vazio, portanto está OK.
    }

Na barra verde do fórum existe uma barra branca com o nome pesquisar dentro. É extremamente recomendável a sua utilização.

Uma das threads sobre isso, aqui mesmo no fórum. Com certeza temos mais um milhão por aqui e mais um milhão no google.

Boa sorte.

Vou fazer um estudo mais aprofundado no get e set, mais deixarei o topico aberto pra novas duvidas sobre get e set blz? Por enquanto valew thingol. E obrigado pela dica celso farei isso na proxima vez eu acho rsrs.Vlw

cara te dando uma boa resumida:

metodos getters:
retornam o estado de um objeto

metodos setters:
modificam o estado do objeto

Os metodos get e set servem para quebrar o encapsulamento e/ou violar a lei de demeter :smiley:

Aqui tem um boa resposta:

http://javafree.uol.com.br/topic-872193-duvidas-com-metodos-GET-e-SET.html

Sempre o encapsulamento e o polimorfismo que dá dor de cabeça no início com Java, normal :smiley:

Jesuino valew pelo link achei de muito valor esse post… Vou dar uma estudada nele Obrigado.

Para setar e retornar valores. :wink:

Que bom que consegui ajudar! Queria ter disponibilidade e conhecimento maior para fazer os tutoriais… Mas sempre que ajudo fico muito feliz! :lol:

Vlww!!!