Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Estou com dúvida no curso de Primeiros passos com Java, no exercício 1 do capítulo Modificadores de acesso.

como irei acessar o atributo da classe Funcionario no Programa que testa a classe Funcionario pelo método "main" em outra classe que chama a classe Funcionario se o modificador de acesso da variavel de instancia ou do atributo dela esta Private?

exemplo na classe Funcionario eu delcarei a variavel private String Nome;

classe FuniconarioTeste

public static void main(String Args[]); Funcionario f1= new Funcionario(); f1.nome= "alex";

// Vai dar erro porque nao consigo ver essa variável que esta privada na classe Funcionario! O que faço?

3 respostas

Então esse tipo de situação garante a segurança dos atributos da sua classe. Imagine que essa classe Funcionario tivesse o atributo anosNaEmpresa e alguem tentasse alterar diretamente o atribubo setando um valor negativo.

f1.anosNaEmpresa = -1;

Uma forma de proteger seus atributos é gerando getters e setters para eles garantindo que apenas a classe Funcionario tenha o controle sobres eles

public int getAnosNaEmpresa(){
return this.anosNaEmpresa;
}

public void setAnosNaEmpresa(int anosNaEmpresa){

if(anosNaEmpresa<0) this.anosNaEmpresa =0 ; //garantia de não ter um valor negativo aqui
else this.anosNaEmpresa = anosNaEmpresa;
}

Então se alguem tentar alterar seu atributo de forma indevida não vai conseguir

f1.setAnosNaEmpresa(-1);
System.out.println(f1.getAnosNaEmpresa())//vai printar 0

Obrigado Cara!

solução!

Não é uma boa prática deixar os atributos de uma classe como público, por isto que criamos os métodos Gets e Sets, para os atributos, não são todas as variáveis de uma classe que vai possuir esses métodos de Get e Set, com isto você terá que decidir quais atributos irá ter esses métodos. Criado esses atributos, você terá como acessar o valor e atribuir valor a ele.

ex: public class pessoa { private String nome; private Date dataNascimento;

public String getNome(){ return nome; } public void setNome(String nome){ this.nome = nome; }

public Date getDataNascimento(){ return dataNascimento; }

public void setDataNascimento(Date dataNascimento){ this.dataNascimento = dataNascimento; } }