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
:- É
private
emVeiculo
, então não é acessível diretamente emCarro
.
- É
-
Atributo
cor
:- É
protected
, o que significa que é acessível emCarro
por ser uma subclasse.
- É
-
Atributo
ano
:- É
public
, então é acessível emCarro
e 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
.