Herança
É comum em programação orientada a objetos a criação de um modelo para alguma coisa (por exemplo um Animal), e depois precisar de um modelo especializado do original. Por exemplo, pode ser necessária a modelagem de um Peixe ou de um Cavalo que seriam um tipo de Animal, porém com algumas características a mais ou diferenciadas.
Considere o exemplo abaixo.
public class Animal {Percebe-se pelo exemplo que houve a duplicação de variáveis entre as classes
public String habitoAlimentar = "";
public String reproducao = "";
public double pesoMedio = 0.0;
public Animal(){}
public Animal(String habitoAlimentar, String reproducao,
double pesoMedio){
...
}
public String detalhaAnimal(){
...
}
}
public class Cavalo {
public String habitoAlimentar = "";
public String reproducao = "";
public double pesoMedio = 0.0;
public String raca = "";
public String corPelagem = "";
public Cavalo(){}
public Cavalo(String habitoAlimentar, String reproducao,
double pesoMedio, String raca, String corPelagem){
...
}
public String detalhaAnimal(){
...
}
}
Animal
e Cavalo
. Além disso pode também existir vários métodos que sejam válidos para ambos. Para evitar esse tipo de repetições desnecessárias é recomendada a criação de subclasses daquelas já existentes (utilização de herança).Em linguagens orientadas a objeto o mecanismo da herança permite ao programador definir uma classe com termos de uma classe anteriormente definida. Em java é utilizada a palavra-chave
extends
para este propósito como mostra o exemplo abaixo.
public class Cavalo extends Animal {Descrevendo a classe
private String raca = "";
private String corPelagem = "";
}
Cavalo
como "é um" Animal
não é apenas um modo conveniente de descrever a relação entre as duas classes faz com que o programador se lembre que Cavalo
tem todos os membros, tanto atributos como métodos, da classe pai Animal
. Isso também significa que se uma operação é válida para Animal
então ela também é válida para Cavalo
. Assim se a classe pai Animal
possui o método detalhaAnimal a classe Cavalo
também a possui.Veja abaixo como seria o diagrama de classe para as classes Animal e Cavalo usando herança.
Sintaxe para uma classe que herda outra:
[modificador] class [nomeDaClasse] extends [nomeDaClassePai]{Vale lembrar que uma herança em Java os contrutores não são herdados, assim se uma classe pai não houver um construtor padrão (sem parâmetros) a classe filha deve implementar uma chamada ao construtor da classe pai com os parâmetros necessários para o contrutor da classe pai. Exemplo: Se a classe pai possui apenas um construtor na forma
[declarações]
}
pai(int x){}
a classe filha deve obrigatoriamente implementar um construtor da seguinte forma: filha(int n){ super(n) }
Herança Simples
A linguagem de programação Java permite que uma classe extenda apenas a uma outra classe. A esta restrição damos o nome de Herança simples. Apesar de possiur a restrição de herança simples, java pode realizar tarefa semelhante a herança múltipla com a utilização de interfaces da seguinte forma:
- Uma classe implementando várias interfaces
- Uma interface extendendo várias interfaces
Interfaces são conjuntos de métodos vazios (não implementados) e constantes. As interfaces não possuem atributos e interfaces são, de forma simplificada, como roteiros a serem seguidos pelas classes que a implementam. Quando uma classe implementa certa interface ela deve implementar cada um dos seus métodos.
Olá carina boa noite!!!
ResponderExcluirEstou passando aqui para agradecer pela ajuda fornecida, pois estava meio perdido sem material consistente para estudar...e dizer tb que está sendo uma Luz nessa caminhada...agredeço de coração tudo isso que vc tem postado aqui e espero mais post futuros, lhe desejo tb muita sorte nesse concurso e saiba que serás retribuida desse favor...pq nada que é feito pro bem não é recompensado....
bjos..
muito obrigado!!!!