É um vs TEM um em Java
- Relacionamento IS-A em Java
- Relacionamento HAS-A em Java
- Principais diferenças entre o relacionamento IS-A e o relacionamento HAS-A
Um dos principais recursos do uso de uma linguagem de programação orientada a objetos é que podemos reutilizar um código várias vezes. Geralmente, podemos usar dois conceitos, Herança e Composição, para alcançar a capacidade de reutilização.
Herança é um relacionamento IS-A e Composição é um relacionamento HAS-A. Ambos os conceitos diferem de uma certa maneira, mas têm o mesmo objetivo, a reutilização.
Vamos ver a diferença entre esses dois conceitos a seguir.
Relacionamento IS-A em Java
Uma herança ou relacionamento IS-A em Java refere-se ao relacionamento de duas ou mais classes. A herança pode ser obtida utilizando a palavra-chave extends em Java. Podemos herdar uma classe pai para usar seus métodos e variáveis em uma classe filha.
No código de exemplo abaixo, temos duas classes, Animal e Cachorro, a classe Animal tem uma função whatAmI() que retorna uma String, enquanto a classe Cachorro estende a classe Animal Que é um conceito de Herança.
Este Cachorro é uma relação Animal. A classe Dog agora pode acessar o método whatAmI() de sua classe pai.
class Animal {
public String whatAmI() {
return "I belong to Animal class";
}
}
class Dog extends Animal {
public void aboutMe() {
System.out.println("I am a Dog class and " + whatAmI());
}
}
Resultado:
I am a Dog class and I belong to Animal class
Relacionamento HAS-A em Java
Ao contrário da herança, a composição ou a relação HAS-A não usa nenhuma palavra-chave como estende. Criamos um objeto da classe pai ou de qualquer classe que desejamos usar neste método.
No exemplo a seguir, novamente, temos duas classes, Pernas e Cachorro.
Legs tem um método howManyLegs(). Na classe Dog, criamos um objeto da classe Legs e usamos esse objeto para chamar a função howManyLegs().
Agora, aqui podemos ver que está a ser aplicado o conceito de Composição, a classe Cachorro HAS-A Pernas ou a classe Cachorro HAS-A propriedade de Pernas.
class Legs {
public String howManyLegs() {
return "I have four legs";
}
}
class Dog {
Legs legs = new Legs();
public void aboutMe() {
System.out.println("I am a Dog class and " + legs.howManyLegs());
}
}
Resultado:
I am a Dog class and I have four legs
Principais diferenças entre o relacionamento IS-A e o relacionamento HAS-A
| É UM | TEM UM |
|---|---|
| É um conceito de herança | É um conceito de composição |
| Uma classe não pode estender mais de uma classe. | Uma classe pode ter relacionamento HAS-A com várias outras classes |
| Uma classe final não pode ser estendida em herança | Podemos reutilizar classes finais em Composição |
| A herança é uma ligação estática e não pode ser alterada em tempo de execução | A composição é uma ligação dinâmica e flexível para mudanças |
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn