Gabarito disponível
Analise o código em JAVA abaixo.
public class Bicycle {
public static void main(String[] args) {
Bike b = new Bike(0,0,0);
MountainBike mb = new MountainBike (0,0,0,0);
}
public static class Bike {
public int cadencia;
public int marcha;
public int veloc;
public Bike (int cadencia_inic, int veloc_inic, int marcha_inic) {
marcha = marcha_inic;
cadencia = cadencia_inic;
veloc = veloc_inic;
}
public void mudar_cadencia(int n) {
cadencia = n;
}
public void mudar_marcha(int n) {
marcha = n;
}
public void frear(int decrement) {
veloc -= decrement;
}
public void acelerar(int increment) {
veloc += increment;
}
}
public static class MountainBike extends Bike {
public int altura_do_banco;
public MountainBike(int altura_inic, int cadencia_inic,
int veloc_inic, int marcha_inic) {
super(cadencia_inic, veloc_inic, marcha_inic);
altura_do_banco = altura_inic;
}
public void alterar_altura_do_banco(int n) {
altura_do_banco = n;
}
public void acelerar(int increment) {
veloc += increment + 1;
}
}
}
Em relação ao código acima, considerando que polimorfismo e herança são aspectos importantes no paradigma de Orientação a Objeto, é correto afirmar que:
public class Bicycle {
public static void main(String[] args) {
Bike b = new Bike(0,0,0);
MountainBike mb = new MountainBike (0,0,0,0);
}
public static class Bike {
public int cadencia;
public int marcha;
public int veloc;
public Bike (int cadencia_inic, int veloc_inic, int marcha_inic) {
marcha = marcha_inic;
cadencia = cadencia_inic;
veloc = veloc_inic;
}
public void mudar_cadencia(int n) {
cadencia = n;
}
public void mudar_marcha(int n) {
marcha = n;
}
public void frear(int decrement) {
veloc -= decrement;
}
public void acelerar(int increment) {
veloc += increment;
}
}
public static class MountainBike extends Bike {
public int altura_do_banco;
public MountainBike(int altura_inic, int cadencia_inic,
int veloc_inic, int marcha_inic) {
super(cadencia_inic, veloc_inic, marcha_inic);
altura_do_banco = altura_inic;
}
public void alterar_altura_do_banco(int n) {
altura_do_banco = n;
}
public void acelerar(int increment) {
veloc += increment + 1;
}
}
}
Em relação ao código acima, considerando que polimorfismo e herança são aspectos importantes no paradigma de Orientação a Objeto, é correto afirmar que:
Resolução comentada
'b' é Bike e não possui o atributo altura_do_banco.
A classe MountainBike herda de Bike e acrescenta altura_do_banco e alterar_altura_do_banco. O objeto 'b' é uma Bike pura e não possui esse atributo nem o método, então sua altura do banco não pode ser alterada.
Análise das alternativas
E está errada pelo mesmo motivo. A está errada porque 'mb' é MountainBike e pode alterar a altura. B está errada porque há polimorfismo, já que acelerar é sobrescrito. D está errada porque há herança (extends).
Referência: Herança e polimorfismo em Java.
Resolução comentada do VaiConcursos.