Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Resolução - Herança

// Class Carro
package br.com.exercicios.modelos;

public class Carro {
    private String modelo;
    private double preco1;
    private double preco2;
    private double preco3;

    public void defineModelo(String modelo) {
        this.modelo = modelo;
    }

    public void definePrecos(double valor1, double valor2, double valor3) {
        preco1 = valor1;
        preco2 = valor2;
        preco3 = valor3;
    }

    public double menorPreco() {
        double menorPreco = preco1;

        if (preco2 < menorPreco) {
            menorPreco = preco2;
        }

        if (preco3 < menorPreco) {
            menorPreco = preco3;
        }

        return menorPreco;
    }

    public double maiorPreco() {
        double maiorPreco = preco1;

        if (preco2 > maiorPreco) {
            maiorPreco = preco2;
        }

        if (preco3 > maiorPreco) {
            maiorPreco = preco3;
        }

        return maiorPreco;
    }

    public void exibeInfo() {
        System.out.println("Modelo: " + modelo);
        System.out.println("Preço - Ano 1: " + preco1);
        System.out.println("Preço - Ano 2: " + preco2);
        System.out.println("Preço - Ano 3: " + preco3);
        System.out.println("Maior preço: " + maiorPreco());
        System.out.println("Menor preço: " + menorPreco());
    }

    public String getModelo() {
        return modelo;
    }

    public void setModelo(String modelo) {
        this.modelo = modelo;
    }

    public double getPreco1() {
        return preco1;
    }

    public void setPreco1(double preco1) {
        this.preco1 = preco1;
    }

    public double getPreco2() {
        return preco2;
    }

    public void setPreco2(double preco2) {
        this.preco2 = preco2;
    }

    public double getPreco3() {
        return preco3;
    }

    public void setPreco3(double preco3) {
        this.preco3 = preco3;
    }
}

//Subclass ModeloCarro

package br.com.exercicios.modelos;

public class ModeloCarro extends Carro {
    private int anoLancamento;
    private String marca;

    @Override
    public void exibeInfo() {
        System.out.println("Modelo: " + getModelo());
        System.out.println("Marca: " + getMarca());
        System.out.println("Ano de lançamento: " + getAnoLancamento());
        System.out.println("Preço - Ano 1: " + getPreco1());
        System.out.println("Preço - Ano 2: " + getPreco2());
        System.out.println("Preço - Ano 3: " + getPreco3());
        System.out.println("Maior preço: " + maiorPreco());
        System.out.println("Menor preço: " + menorPreco());
    }

    public String getMarca() {
        return marca;
    }

    public void setMarca(String marca) {
        this.marca = marca;
    }

    public int getAnoLancamento() {
        return anoLancamento;
    }

    public void setAnoLancamento(int anoLancamento) {
        this.anoLancamento = anoLancamento;
    }
}


// Main

import br.com.exercicios.modelos.ModeloCarro;

public class Main {
    static void main(String[] args) {
        ModeloCarro carro = new ModeloCarro();
        carro.setModelo("Gol");
        carro.setMarca("Volkswagen");
        carro.setAnoLancamento(2000);
        carro.setPreco1(11999.99);
        carro.setPreco2(15999.99);
        carro.setPreco3(14999.99);

        carro.exibeInfo();
    }
}
1 resposta

Oii Mayara, tudo bem?

Obrigada por compartilhar sua resolução aqui no fórum, vai ajudar outros alunos que estejam trabalhando com herança!

Sua implementação ficou bem estruturada. Você usou corretamente o extends para criar a subclasse, fez o @Override do exibeInfo() para incluir os novos atributos (marca e anoLancamento), e ainda aproveitou os getters da classe pai para acessar os atributos privados. Isso demonstra que você entendeu bem como funciona o encapsulamento com herança.

Uma observação que vale considerar: no exibeInfo() da subclasse, você poderia chamar super.exibeInfo() para reaproveitar o que a classe pai já imprime e depois adicionar apenas as informações novas. Depende do contexto, claro, mas é uma alternativa elegante para evitar duplicação de código.

Conte com a Alura para evoluir seus estudos. Em caso de dúvidas, fico à disposição.

Bons estudos!

Sucesso

Imagem da comunidade