class veiculo {
private String modelo;
protected String cor;
public int ano;
public Veiculo(String modelo, String cor, int ano) {
this.modelo = modelo;
this.cor = cor;
this.ano = ano;
}
protected void mostrarCor() {
System.out.println( }
}
class Carro extends Veiculo {
public Carro(String modelo, String cor, int ano) {
super(modelo, cor, ano);
}
Por que o atributo modelo não pode ser acessado diretamente na classe Carro?
private String modelo;
protected String cor;
public int ano;
public Veiculo(String modelo, String cor, int ano) {
this.modelo = modelo;
this.cor = cor;
this.ano = ano;
}
protected void mostrarCor() {
System.out.println( }
}
class Carro extends Veiculo {
public Carro(String modelo, String cor, int ano) {
super(modelo, cor, ano);
}
Por que o atributo modelo não pode ser acessado diretamente na classe Carro?
Passo 1
Beleza, vamos lá! O exercício pede pra gente entender por que o atributo
modelo não pode ser acessado diretamente na classe Carro. A gente tá lidando com herança e modificadores de acesso na programação orientada a objetos, especificamente em Java. Pra resolver isso, vamos precisar saber como funcionam os diferentes níveis de acesso (private, protected, public) nos atributos das classes.Passo 2
Primeiro, vamos dar uma olhada na classe
Veiculo. Ela tem três atributos:private String modelo;protected String cor;public int ano;
O atributo que tá causando a dúvida é o
modelo, que é private. Em Java, quando um atributo é declarado como private, isso significa que ele só pode ser acessado dentro da própria classe onde foi definido. Ou seja, apenas a classe Veiculo pode ver e manipular diretamente o modelo.Passo 3
Agora, vamos ver a classe
Carro que estende Veiculo. Isso significa que Carro herda os atributos e métodos de Veiculo. Porém, aí entra a regra dos modificadores de acesso:private: Só a própria classe pode acessar.protected: A classe e suas subclasses podem acessar.public: Qualquer classe pode acessar.
Como o
modelo é private, mesmo a classe Carro que herda de Veiculo não consegue acessar diretamente esse atributo. Já o atributo cor, que é protected, pode ser acessado pela Carro sem problemas.Resposta
O atributo
modelo não pode ser acessado diretamente na classe Carro porque ele foi declarado como private na classe Veiculo, o que restringe seu acesso apenas à própria classe Veiculo e impede que subclasses como Carro o acessem diretamente.