do Jipe public void ligarTracao4x4() { // Codigo aqui }}A classe que representa o nosso carro de passeio:public class CarroPasseio { private String marca; private Double capacidadeTanqueCombustivel; // Metodos Get e Set do atributo capacidadeTanqueCombustivel public Double getTanqueCombustivel() { return capacidadeTanqueCombustivel; } public void setTanqueCombustivel(Double capacidadeTanqueCombustivel) { this.capacidadeTanqueCombustivel = capacidadeTanqueCombustivel; } // Metodos Get e Set do atributo marca public String getMarca() { return marca; } public void setMarca(String marca) { this.marca = marca; } // Metodo para representar o ar condicionado do carro de passeio public void ligarArCondicionado() { // Codigo aqui }}E, finalmente, a classe que representa o nosso veiculo utilitario:public class Utilitario { private String marca; private Double capacidadeTanqueCombustivel; // Metodos Get e Set do atributo capacidadeTanqueCombustivel public Double getTanqueCombustivel() { return capacidadeTanqueCombustivel; } public void setTanqueCombustivel(Double capacidadeTanqueCombustivel) { this.capacidadeTanqueCombustivel = capacidadeTanqueCombustivel; } // Metodos Get e Set do atributo marca public String getMarca() { return marca; } public void setMarca(String marca) { this.marca = marca; } // Metodo para representar o farol de milha do carro utilitario public void ligarFarolMilha() { // Codigo aqui }}Perceba que, nas linhas destacadas, temos as caracteristicas que dizem respeito a apenas um dos tipos de veiculos, isto e, no nosso modelo, apenas jipes tem tracao 4x4, somente os carros de passeio tem opcao de ligar o ar condicionado e os utilitarios tem farol de milha.Todas os demais estados e comportamentos sao identicos, na verdade para criar estas tres classes foi realizado uma simples copia e cola dos membros que sao iguais. Agora, se a concessionaria resolvesse criar mais 8 tipos de veiculos difrentes, teriamos que repetir todos esses codigos?Na verdade nada disto seria necessario se nos tivessemos utilizado corretamente o conceito de heranca da programacao Orientada a Objetos. Perceba que com excecao das caracteristicas que estao grifadas todas as demais sao comuns a todos os veiculos, ou seja, e possivel que tenhamos uma superclasse (classe Pai) Veiculo e que todas as demais herdem estas caracteristicas comuns dela.A nossa classe Veiculo ficaria da seguinte forma:public class Veiculo { private String marca; private Double capacidadeTanqueCombustivel; // Metodos Get e Set do atributo capacidadeTanqueCombustivel public Double getTanqueCombustivel() { return capacidadeTanqueCombustivel; } public void setTanqueCombustivel(Double capacidadeTanqueCombustivel) { this.capacidadeTanqueCombustivel = capacidadeTanqueCombustivel; } // Metodos Get e Set do atributo marca public String getMarca() { return marca; } public void setMarca(String marca) { this.marca = marca; }}Tudo o que era comum a todos os veiculos foi concentrado na classeVeiculo. Para que as demais classes herdem estas caracteristicas nos devemosutilizar a palavra reservada extends.Entao, as classes que definimos anteriormente, seriam reescritas da seguinte forma:// Classe que representa o Jipe public class Jipe extends Veiculo{ public void ligarTracao4x4() { //Codigo aqui }}// Classe que representa o Carro de passeio public class CarroPasseio extends Veiculo{ public void ligarArCondicionado() { //Codigo aqui }}// Classe que representa o Utilitario public class Utilitario extends Veiculo { public void ligarFarolMilha() { //Codigo aqui }}Graficamente podemos representar esta hierarquia de classes da seguinteforma:Nesta nova hierarquia de classes toda a subclasse de Veiculo ira compartilhar as suas caracteristicas, dizemos que um jipe, carro de passeio ou utilitario