Na programação orientada a objetos, os conceitos de herança, polimorfismo e abstração são fundamentais para o desenvolvimento de sistemas bem estruturados. Compreender como esses pilares funcionam ajuda a evitar erros conceituais durante o desenvolvimento e testes. Considere o seguinte código em Java: abstract class Veiculo ( protected String marca; protected int ano; public Veiculo(String marca, int ano) { this.marca = marca; this.ano = ano; } public abstract void acelerar (); public abstract double calcularConsumo(double distancia) ; public void ligar() { System.out.println("Veiculo ligado") ; } } class Carro extends Veiculo { private int numeroPortas; public Carro(String marca, int ano, int numeroPortas) { super (marca, ano); this.numeroPortas = numeroPortas; } @Override public void acelerar() { System.out.println("Carro acelerando suavemente"); } @Override public double calcularConsumo(double distancia) { return distancia / 12.0; } } class Motocicleta extends Veiculo { private boolean temBau; public Motocicleta(String marca, int ano, boolean temBau) { super (marca, ano); this.temBau = temBau; } @Override public void acelerar() { System.out.println("Motocicleta acelerando rapidamente"); } @Override public double calcularConsumo(double distancia) { return distancia / 25.0; } }
Analisando o código apresentado anteriormente, a correta identificação dos conceitos de orientação a objetos aplicados corresponde a