Extensões vs. Implementos em Java
-
Herdar uma classe usando a palavra-chave
extends
em Java -
Herdar uma interface usando a palavra-chave
implements
em Java
Para reutilizar as propriedades e comportamentos de uma determinada classe pai em Java, usamos o conceito de herança, que é uma parte importante de uma linguagem de programação orientada a objetos. A ideia por trás disso é a capacidade de reutilização do código. Ambas as palavras-chave implements
e extends
são usadas para criar uma nova classe em Java que possui os atributos da classe pai.
Podemos ter uma melhor compreensão das palavras-chave extends
e implements
usando a tabela abaixo.
Definição | Implementação | Aula | Interface | Métodos | |
---|---|---|---|---|---|
extends |
Quando uma subclasse (filha) extends uma classe base (pai), permite que a subclasse herde o código definido na classe base. |
Uma classe pode herdar outra classe. Uma interface pode herdar outra interface usando a palavra-chave extends . |
Uma classe pode estender apenas uma classe. | Qualquer número de interfaces pode ser estendido por uma interface. | A classe subclasse está estendendo uma classe pai pode ou não substituir todos os métodos na classe base. |
implements |
A palavra-chave implements é usada para implementar uma interface. Uma interface contém métodos abstratos. O corpo do método é definido na classe que o implementa. |
Usando a palavra-chave implements , uma classe pode implementar uma interface. |
Mais de uma interface pode ser implementada por uma classe. | Uma interface nunca pode implementar qualquer outra interface. | A classe que implementa uma interface deve implementar todos os métodos da interface. |
Herdar uma classe usando a palavra-chave extends
em Java
No código abaixo, temos um Parent
, que é a classe base, e Child
como a subclasse. A classe Child
estende a classe Parent
, o que significa que a classe Child
agora tem acesso aos campos e métodos definidos dentro da classe Parent
.
Em nossa classe Test
, criamos um objeto da classe subclasse child
e chamamos o método displayNumber()
nele. O método displayString()
, que é definido dentro da classe pai, pode ser executado chamando-o no mesmo objeto child
. Conseqüentemente, ele cumpre o propósito de reutilização de código.
public class Test {
public static void main(String args[]) {
Child child = new Child();
System.out.println("Calling Child class method : " + child.displayNumber());
System.out.println("Calling Parent class method from child : " + child.displayString());
}
}
class Parent {
String str = "Hello there!";
public String displayString() {
return str;
}
}
class Child extends Parent {
int number = 25;
public int displayNumber() {
return number;
}
}
Resultado:
Calling Child class method : 25
Calling Parent class method from child : Hello there!
Herdar uma interface usando a palavra-chave implements
em Java
Temos duas interfaces, Cat
e Dog
, no código abaixo, cada uma contendo um método abstrato dentro dela. Uma classe Animals
implementa ambas as interfaces, por isso deve implementar o método definido nas interfaces.
Portanto, a classe Animals
implementou ambas as interfaces e definiu seus comportamentos, que é o propósito da interface em Java.
interface Cat {
public void meow();
}
interface Dog {
public void bark();
}
class Animals implements Dog, Cat {
@Override
public void meow() {
System.out.println("Cat meows");
}
@Override
public void bark() {
System.out.println("Dog barks");
}
}
public class Test1 {
public static void main(String args[]) {
Animals animals = new Animals();
animals.bark();
animals.meow();
}
}
Resultado
Dog barks Cat meows
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