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?
c) O valor de nome será acessado por meio do método getNome().
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?
c) O valor de nome será acessado por meio do método getNome().
Passo 1
Beleza, vamos resumir o que a questão pediu. A gente tem uma classe Produto que declara
private String nome;
private double preco;
e fornece só um construtor e os getters
Conteúdo: modificadores de acesso em Java (encapsulamento).
O que vamos precisar: entender o que significa
getNome()
e getPreco()
.Conteúdo: modificadores de acesso em Java (encapsulamento).
O que vamos precisar: entender o que significa
private
e como acessar atributos privados de fora da própria classe.Passo 2
Em Java, o modificador
private
em cima de um atributo ou método diz “só quem tá dentro desta classe pode ver ou usar isso”. É parte do encapsulamento, que serve pra proteger o estado interno do objeto. Então, fora da classe Produto
, você não consegue nem ler nem gravar em nome
diretamente – o compilador vai barrar.Passo 3
Se você tentar algo como:
Produto p = new Produto("Caneta", 5.0);
System.out.println(p.nome);
o compilador vai reclamar na hora de compilar e lançar um erro tipo:
nome has private access in Produto
Isso significa que você não tem permissão pra usar
nome
desse jeito.Passo 4
A saída é usar o método público que a própria classe expôs, que chamei de getter. Ou seja:
System.out.println(p.getNome());
Esse método está marcado como
public
e devolve o valor de nome
.Resposta
Se você tentar acessar
nome
diretamente fora da classe Produto
, dá erro de compilação (“nome has private access in Produto”). O jeito certo é pegar o valor por meio de getNome()
.