Segue a resolução do desafio.
Exercício 1:
Classe Carro:
package br.com.alura.poo.reaproveitandoCaracteristicasEComportamentos;
import java.time.LocalDate;
import java.util.Scanner;
public class Carro {
private int anoInicial;
private int[] anos = new int[3];
int[] idades = new int[3];
private double[] precos = new double[3];
public void setAnoInicial (int anoInicial) {
this.anoInicial = anoInicial;
}
public int[] getAnos(){
for(int i = 0; i < 3; i++){
anos[i] = anoInicial - i;
}
return anos;
}
public int[] getIdades(){
for(int i = 0; i < 3; i++){
idades[i] = LocalDate.now().getYear() - anoInicial + i;
}
return idades;
}
public void setPrecos() {
Scanner scanner = new Scanner(System.in);
if (anoInicial == 0){
System.out.println("Digite o ano inicial: ");
anoInicial = scanner.nextInt();
}
for (int i = 0; i < 3; i++){
System.out.println("Digite o preço do carro para o ano de " + getAnos()[i]);
precos[i] = scanner.nextDouble();
}
scanner.close();
}
public double[] getPrecos() {
return precos;
}
@Override
public String toString(){
return ", Preço " + getAnos()[0] + ": " + getPrecos()[0] +
", Preço " + getAnos()[1] + ": " + getPrecos()[1] +
", Preço " + getAnos()[2] + ": " + getPrecos()[2] +
", Idades: " + getIdades()[0] + ", " + getIdades()[1] + " e " + getIdades()[2] + " anos.";
}
}
Classe ModeloCarro:
package br.com.alura.poo.reaproveitandoCaracteristicasEComportamentos;
public class ModeloCarro extends Carro {
private String modelo;
private String cor;
public String getModelo() {
return modelo;
}
public void setModelo(String modelo) {
this.modelo = modelo;
}
public String getCor() {
return cor;
}
public void setCor(String cor) {
this.cor = cor;
}
@Override
public String toString(){
return "Modelo: " + modelo +
", Cor: " + cor +
", Preço " + getAnos()[0] + ": " + getPrecos()[0] +
", Preço " + getAnos()[1] + ": " + getPrecos()[1] +
", Preço " + getAnos()[2] + ": " + getPrecos()[2] +
", Idades: " + getIdades()[0] + ", " + getIdades()[1] + " e " + getIdades()[2] + " anos.";
}
}
Exercício 2:
Classe Animal:
package br.com.alura.poo.reaproveitandoCaracteristicasEComportamentos;
public class Animal {
protected String nome;
protected String cor;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCor() {
return cor;
}
public void setCor(String cor) {
this.cor = cor;
}
public String emitirSom(){
return "Emitido Som";
}
@Override
public String toString() {
return "Animal{" + "nome=" + nome + ", cor=" + cor + '}';
}
}
Classe Cachorro:
package br.com.alura.poo.reaproveitandoCaracteristicasEComportamentos;
public class Cachorro extends Animal {
private boolean motoqueiro;
public boolean isMotoqueiro() {
return motoqueiro;
}
public void setMotoqueiro(boolean motoqueiro) {
this.motoqueiro = motoqueiro;
}
@Override
public String emitirSom() {
if (motoqueiro) {
return "Au Au Au Au Au Au Au Au Au Au";
}
else {
return "Au au...";
}
}
@Override
public String toString() {
return "Cachorro{" + "nome=" + nome + ", cor=" + cor + ", motoqueiro=" + motoqueiro + "}\n" + emitirSom();
}
}
Classe Gato:
package br.com.alura.poo.reaproveitandoCaracteristicasEComportamentos;
public class Gato extends Animal{
private boolean fome;
public boolean isFome() {
return fome;
}
public void setFome(boolean fome) {
this.fome = fome;
}
@Override
public String emitirSom(){
if(fome){
return"Miaaaaaaaaaaaaaaau...";
} else {
return "Miau...";
}
}
@Override
public String toString() {
return "Gato{" + "nome=" + nome + ", cor=" + cor + ", fome=" + fome + "}\n" + emitirSom();
}
}