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.