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?
b) Irà gerar um erro de compilaçăo, pois o atributo nome é privado.

Passo 1

Beleza, bora lá! A questão tá falando de uma classe Java chamada Produto que tem dois atributos privados: nome e preco. Ela tem só um construtor e dois métodos getters. O que a gente quer saber é: “E se eu tentar fazer algo como meuProduto.nome lá fora da classe, o que acontece?” Então o conteúdo aqui é Programação Orientada a Objetos em Java, mais especificamente modificadores de acesso (encapsulamento). Vamos precisar entender o que significa private e como o compilador Java trata isso.

Passo 2

Teoria rápida: em Java, quando você declara um atributo como
private String nome;
você está dizendo que o código dentro da própria classe Produto pode usar nome. Isso é parte do encapsulamento, que serve pra proteger o estado do objeto e forçar o uso de getters/setters pra ler ou alterar valores. Se você, em outra classe, tentar fazer algumProduto.nome, o compilador Java vai barrar isso em tempo de compilação.

Passo 3

Vamos simular:
Produto p = new Produto("Caneca", 25.0);
String n = p.nome; // <--- aqui o bicho pega
Quando você mandar compilar, vai rolar um erro tipo:
error: nome has private access in Produto
String n = p.nome;
               ^
Isso significa que o compilador não deixa você “furar” o encapsulamento.

Resposta

Vai gerar um erro de compilação, dizendo algo como “nome has private access in Produto”, porque o atributo nome foi definido como private e não pode ser acessado diretamente de fora da classe.

Exercícios relacionados