Key Difference – Herança vs Interface em Java
Java é uma linguagem de programação desenvolvida pela Sun Microsystems. Java pode ser usado para desenvolver várias aplicações. É uma linguagem multiparadigma que suporta orientação a objetos, estruturada etc. A principal vantagem do Java é que ele suporta programação orientada a objetos (OOP). O programador pode criar classes e objetos. Existem quatro pilares na POO. Eles são herança, polimorfismo, abstração e encapsulamento. A herança e as interfaces estão relacionadas à OOP. A principal diferença entre herança e interface é que herança é derivar novas classes de classes existentes e uma interface é implementar classes abstratas e herança múltipla.
O que é Herança em Java?
A herança pode alcançar a reutilização do código. A herança ajuda a reutilizar os atributos e métodos de uma classe existente. O mecanismo de derivar uma nova classe usando a classe antiga é chamado de herança. A classe antiga é conhecida como classe pai ou superclasse. A classe derivada é chamada de classe filha ou subclasse.
A sintaxe da herança Java é a seguinte.
class subclass_name estende superclass_name {
declaração de variável;
declaração do método;
}
O conceito de herança pode ser explicado usando o exemplo a seguir. Suponha que exista uma classe chamada A da seguinte forma.
classe pública A{
public void sum(){
System.out.println(“Soma”);
}
}
Se quisermos adicionar um novo método sem alterar a classe existente, podemos fazer da seguinte forma.
classe pública B{
public void sub(){
System.out.println(“Sub”);
}
}
Programador pode usar herança para usar a classe A sum().
classe pública B estende a classe A{
public void sub(){
System.out.println(“Sub”);
}
}
Na função principal, é possível criar um objeto de B e chamar sub(), que pertence à classe B e sum(), que pertence à classe A usando herança.
public static void main(String args){
B obj=new B();
obj.sub();
obj.sum();
}
Existem diferentes tipos de herança. Eles são herança única, herança múltipla, herança multinível e herança hierárquica. Na herança simples, há uma classe base e uma classe derivada. Na herança multinível, existem três classes: classe base, classe intermediária e classe derivada. A classe intermediária herda da classe base e a classe derivada herda da classe intermediária. Na herança hierárquica, há uma classe base e muitas classes derivadas. Existe um tipo especial conhecido como herança híbrida. É uma combinação de dois ou mais tipos de herança.
Figura 01: Herança
Na herança múltipla existem muitas classes base e uma classe derivada. Suponha que as classes A e B sejam as classes base. A classe C é a classe derivada. Se ambas as classes A e B tiverem o mesmo método e o programador chamar esse método da classe derivada, isso causará um problema de ambiguidade. Herdar duas classes pode causar um erro em tempo de compilação. Portanto, herança múltipla não é suportada em Java. Uma interface pode ser usada para superar esse problema.
O que é Interface em Java?
Abstração é um processo de ocultar os detalhes da implementação e exibir apenas as funcionalidades para o usuário. A abstração pode ser obtida usando classes abstratas ou interfaces. Um método abstrato é um método sem implementação. Uma classe com pelo menos um método abstrato é uma classe abstrata. O exemplo de uma classe abstrata é o seguinte.
classe abstrata A{
abstrato void sum();
}
Assuma que existem duas classes abstratas como A e B. Para implementar métodos abstratos de A e B, uma nova classe C é criada. Então a classe C deve estender A e B. Mas herança múltipla não é suportada em Java. Portanto, deve usar interfaces. Interfaces podem ser usadas para declarar métodos, mas não é possível definir métodos. Não é possível criar um objeto usando interfaces. A classe C deve implementar todos os métodos na interface A e B.
interface A{
void sum();
}
interface B{
void sub();
}
classe C implementa A, B{
public void sum(){
System.out.println(“Soma”);
}
public void sub(){
System.out.println(“Subtração”);
}
}
Agora, no programa principal é possível criar um objeto de C e chamar os dois métodos.
public static void main (String args) {
C obj=new C();
obj.sum();
obj.sub();
}
As interfaces podem ser usadas para implementar herança múltipla.
Outro uso das interfaces é fornecer segurança. Consulte o código abaixo.
interface A {
void sum();
}
class B implementa A {
soma nula pública () {
System.out.println(“Soma”);
}
public void multiplica () {
System.out.println(“Multiplicação”);
}
}
Ao criar um objeto de B, é possível chamar os dois métodos soma () e multiplicar (). Se o programador quiser restringir o uso da função multiplicar (), é possível da seguinte forma.
public static void main(String args){
A obj=new B();
obj.sum();
}
A obj=new B(); criará um objeto. É do tipo A e a memória é alocada como B. É possível chamar sum() mas não pode executar multiplicar(). Esta restrição é feita usando interfaces.
Quais são as semelhanças entre herança e interface em Java?
- Ambos os conceitos estão relacionados à Programação Orientada a Objetos
- Ambos representam a relação IS-A.
Qual é a diferença entre herança e interface em Java?
Herança vs Interface em Java |
|
Herança é um conceito OOP para derivar novas classes das classes existentes. | Interface é um mecanismo em OOP para implementar abstração e herança múltipla. |
Uso | |
Herança fornece reutilização de código. | Interfaces fornecem abstração e herança múltipla. |
Resumo – Herança vs Interface em Java
Java é uma linguagem de programação multiparadigma que suporta programação orientada a objetos. Herança e interfaces estão relacionadas à programação orientada a objetos. A diferença entre herança e interface é que herança é derivar novas classes de classes existentes e interfaces é implementar classes abstratas e herança múltipla.
Baixe a versão em PDF de Herança vs Interface em Java
Você pode baixar a versão em PDF deste artigo e usá-lo para fins offline conforme nota de citação. Faça o download da versão em PDF aqui Diferença entre herança e interface em Java