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);
}
Quais atributos e métodos da classe veiculo estão acessíveis na classe Carro?

Passo 1

Vamos resumir o que está sendo perguntado aqui. Temos duas classes em Java: Veiculo e Carro, onde Carro é uma subclasse de Veiculo. A questão quer que a gente identifique quais atributos e métodos da classe Veiculo podem ser acessados dentro da classe Carro. Para resolver isso, vamos precisar entender os modificadores de acesso em Java e como a herança funciona.

Passo 2

Primeiro, vamos relembrar os modificadores de acesso em Java. Eles determinam a visibilidade dos membros (atributos e métodos) de uma classe. Os principais são:
  • private: Só a própria classe pode acessar.
  • protected: A classe e suas subclasses conseguem acessar, mesmo que estejam em pacotes diferentes.
  • public: Qualquer classe pode acessar.
  • (Nenhum modificador) – também conhecido como package-private: Acesso limitado às classes do mesmo pacote.

Passo 3

Agora, vamos olhar para a classe Veiculo:
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(cor);
    }
}
Aqui, temos:
  • modelo: private
  • cor: protected
  • ano: public
  • mostrarCor(): protected

Passo 4

Em seguida, a classe Carro que estende Veiculo:
class Carro extends Veiculo {
    public Carro(String modelo, String cor, int ano) {
        super(modelo, cor, ano);
    }
}
Como Carro é uma subclasse de Veiculo, ela herda os membros de Veiculo de acordo com os modificadores de acesso.

Passo 5

Vamos analisar quais membros de Veiculo são acessíveis em Carro:
  1. Atributo modelo:
    • É private em Veiculo, então não é acessível diretamente em Carro.
  2. Atributo cor:
    • É protected, o que significa que é acessível em Carro por ser uma subclasse.
  3. Atributo ano:
    • É public, então é acessível em Carro e em qualquer outra classe.
  4. Método mostrarCor():
    • É protected, portanto, é acessível em Carro.

Passo 6

Além disso, o construtor de Veiculo é public, o que permite que Carro o utilize através da palavra-chave super para inicializar os atributos herdados.

Resposta

Na classe Carro, são acessíveis os seguintes atributos e métodos da classe Veiculo:
  • Atributos:
    • cor (protected)
    • ano (public)
  • Métodos:
    • mostrarCor() (protected)
O atributo modelo não é acessível diretamente porque é private na classe Veiculo.

Exercícios relacionados