Código com herança e polimorfismo: criado em diretórios comuns no IntelliJ sem maven ou gradle...
public class Carro { private String modelo; private double[] precos = new double[3];
public void setModelo(String modelo) {
this.modelo = modelo;
}
public String getModelo() {
return modelo;
}
public void setPrecos(double ano1, double ano2, double ano3) {
precos[0] = ano1;
precos[1] = ano2;
precos[2] = ano3;
}
public double getMenorPreco() {
double menor = precos[0];
for (double preco : precos) {
if (preco < menor) {
menor = preco;
}
}
return menor;
}
public double getMaiorPreco() {
double maior = precos[0];
for (double preco : precos) {
if (preco > maior) {
maior = preco;
}
}
return maior;
}
public void exibirInformacoes() {
System.out.println("Modelo: " + modelo);
System.out.println("Menor preço: R$ " + getMenorPreco());
System.out.println("Maior preço: R$ " + getMaiorPreco());
}
}
Subclasse que herda e sobrepôe método:
public class ModeloCarro extends Carro { @Override public void exibirInformacoes() { System.out.println("=== Detalhes do Modelo ==="); super.exibirInformacoes(); // Chama método da superclasse System.out.println("=========================="); } }
Classe principal com uso de herança e polimorfismo:
public class Principal { public static void main(String[] args) {
Carro carro1 = new ModeloCarro();
carro1.setModelo("Toyota Corolla");
carro1.setPrecos(85000.00, 90000.00, 88000.00);
// Método sobreposto será chamado
carro1.exibirInformacoes();
}
}