O que é herança múltipla em Java?

Os desenvolvedores projetaram o Java desde o início para ser uma linguagem de programação completa e orientada a objetos. Por esse motivo, os conceitos abrangentes da programação orientada a objetos são cada vez mais importantes na funcionalidade básica do Java. Em particular, os conceitos de herança de classe (e os problemas que surgem dela) são preocupações fundamentais dos programadores de Java. Um desses problemas, herança múltipla, pode ser solucionado através da compreensão de como a herança funciona e como o Java usa interfaces.

POO e herança

O uso da programação orientada a objetos usa o conceito de herança para estender a funcionalidade dos objetos. Pense em quando um programador cria um objeto. Posteriormente, você poderá ver que precisa criar um objeto muito semelhante, com apenas pequenas diferenças (talvez estendendo a funcionalidade de um objeto anterior em um novo contexto). É aqui que a herança aparece. Um objeto que um programador “deriva” de outro objeto “base” herda os métodos e variáveis ​​da classe e, em seguida, pode adicionar mais funcionalidades (como no seguinte exemplo de Java):

public class Sphere {public int radius; }

classe pública Ball estende Sphere {cor pública da string; // Ball adiciona a variável “color”, mas também usa a variável “radius”}

Herança múltipla

Em algum momento, um programador pode ficar tentado a derivar uma única classe de várias classes. Isso é conhecido como “herança múltipla” e, embora pareça útil, pode causar problemas, como o importante “problema do diamante”. Esse problema ocorre quando duas classes herdam da mesma classe (como as classes B e C derivam da classe A), enquanto outra classe (D) deriva de B e C. Quando um objeto D é criado, o sistema o trata como um tipo de classe base (classe “Bola” ou bola e “Esfera” ou esfera, por exemplo). No problema do diamante, o sistema não pode determinar decisivamente qual classe D (é do tipo ABD ou do tipo ACD?) Que causa problemas.

Java e herança múltipla

Devido a problemas com herança múltipla, o Java não permite. Mas, na realidade, as classes derivadas de várias classes base podem ser alcançadas de maneira segura usando “interfaces”. Uma interface é semelhante a uma classe, mas não apenas define a estrutura da classe, mas também seu código real. Uma classe base que implementa uma interface não necessariamente “herda” a funcionalidade da interface: apenas promete o uso de sua estrutura. Como uma classe que implementa uma interface não herda de outra classe (e não é um tipo da classe base), um programador pode implementar várias interfaces usando a mesma classe.

Exemplo: herança e interfaces

O exemplo a seguir mostra a diferença entre herança de objetos e uma interface. Uma classe que herda de outra obtém acesso à classe base porque ela se torna basicamente um tipo dessa classe (como nas classes “Bola” e “Esfera”). Uma classe que implementa uma interface promete apenas implementar a estrutura de sua interface: não é um tipo dessa interface:

Interface básica {int doubleA (); // nota: nenhum código real é definido na interface}

a classe pública B implementa o Basic {

public int a;

public int doubleA () // classe B deve definir o método “doubleA ()” para implementar “Basic” {return a * 2;}}

Referências

 

Você pode estar interessado:

Deixe um comentário