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?
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: privatecor: protectedano: publicmostrarCor(): 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:-
Atributo
modelo:- É
privateemVeiculo, então não é acessível diretamente emCarro.
- É
-
Atributo
cor:- É
protected, o que significa que é acessível emCarropor ser uma subclasse.
- É
-
Atributo
ano:- É
public, então é acessível emCarroe em qualquer outra classe.
- É
-
Método
mostrarCor():- É
protected, portanto, é acessível emCarro.
- É
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.