Considere a seguinte definição de classe:
public class Produto {
private String nome;
private double preco;
public Produto(String nome, double preco) {
this.nome = nome;
this.preco = preco;
}
public String getNome() {
return nome;
}
public double getPreco() {
return preco;
}
}
O que acontece se você tentar acessar o atributo nome diretamente em um objeto dessa classe fora da classe Produto?
d) Nenhuma das opçōes acima.
public class Produto {
private String nome;
private double preco;
public Produto(String nome, double preco) {
this.nome = nome;
this.preco = preco;
}
public String getNome() {
return nome;
}
public double getPreco() {
return preco;
}
}
O que acontece se você tentar acessar o atributo nome diretamente em um objeto dessa classe fora da classe Produto?
d) Nenhuma das opçōes acima.
Passo 1
Beleza, vamos resumir o que o enunciado pede e o que vamos usar.
Você tem uma classe Java chamada
Você tem uma classe Java chamada
Produto que declara dois atributos:private String nome;
private double preco;
O construtor e os getters estão lá, mas o ponto é: esses atributos são
Matéria: encapsulamento em Java e modificadores de acesso (public, private, protected).
O que precisamos saber:
private.Matéria: encapsulamento em Java e modificadores de acesso (public, private, protected).
O que precisamos saber:
- O que significa um atributo ser
private. - O que acontece quando tentamos usar esse atributo fora da própria classe.
Passo 2
O modificador
Se você tiver, por exemplo:
private em Java faz com que aquele membro (atributo ou método) só seja acessível de dentro da mesma classe onde ele é declarado.Se você tiver, por exemplo:
Produto p = new Produto("Caneta", 2.50);
System.out.println(p.nome);
esse
p.nome está tentando pegar o campo nome diretamente, e não há permissão pra isso porque nome é private.Passo 3
Quando o compilador Java vê
A mensagem típica de erro é algo como:
p.nome fora da classe Produto, ele reclama que não encontra visibilidade.A mensagem típica de erro é algo como:
nome has private access in Produto
Resposta
Você vai receber um erro de compilação, pois o atributo
nome é private e não pode ser acessado diretamente fora da classe Produto.