logo

Interface em Java

  1. Interface
  2. Exemplo de interface
  3. Herança múltipla por interface
  4. Por que a herança múltipla é suportada na Interface, embora não seja suportada no caso da classe.
  5. Interface do marcador
  6. Interface aninhada

Um interface em Java é um projeto de uma classe. Possui constantes estáticas e métodos abstratos.

string para itn

A interface em Java é um mecanismo para alcançar abstração . Só pode haver métodos abstratos na interface Java, não no corpo do método. É usado para obter abstração e múltiplas herança em Java .

Em outras palavras, você pode dizer que as interfaces podem ter métodos e variáveis ​​abstratas. Não pode ter um corpo de método.

Interface Java também representa o relacionamento IS-A .

Não pode ser instanciado como a classe abstrata.

Desde Java 8, podemos ter métodos padrão e estáticos em uma interface.

Desde Java 9, podemos ter métodos privados em uma interface.

remover o primeiro caractere no Excel

Por que usar a interface Java?

Existem principalmente três razões para usar a interface. Eles são fornecidos abaixo.

  • É usado para obter abstração.
  • Por interface, podemos suportar a funcionalidade de herança múltipla.
  • Ele pode ser usado para obter um acoplamento fraco.
Por que usar a interface Java

Como declarar uma interface?

Uma interface é declarada usando a palavra-chave interface. Fornece abstração total; significa que todos os métodos em uma interface são declarados com corpo vazio e todos os campos são públicos, estáticos e finais por padrão. Uma classe que implementa uma interface deve implementar todos os métodos declarados na interface.

Sintaxe:

 interface { // declare constant fields // declare methods that abstract // by default. } 

Melhoria da interface Java 8

Desde Java 8 , a interface pode ter métodos padrão e estáticos, que serão discutidos posteriormente.

Adição interna pelo compilador

O compilador Java adiciona palavras-chave públicas e abstratas antes do método de interface. Além disso, adiciona palavras-chave públicas, estáticas e finais antes dos membros dos dados.

Em outras palavras, os campos da interface são públicos, estáticos e finais por padrão, e os métodos são públicos e abstratos.

interface em java

A relação entre classes e interfaces

Conforme mostrado na figura abaixo, uma classe estende outra classe, uma interface estende outra interface, mas uma classe implementa uma interface .

A relação entre classe e interface

Exemplo de interface Java

Neste exemplo, a interface Printable possui apenas um método e sua implementação é fornecida na classe A6.

 interface printable{ void print(); } class A6 implements printable{ public void print(){System.out.println('Hello');} public static void main(String args[]){ A6 obj = new A6(); obj.print(); } } 
Teste agora

Saída:

comando superior unix
 Hello 

Exemplo de interface Java: desenhável

Neste exemplo, a interface Drawable possui apenas um método. Sua implementação é fornecida pelas classes Rectangle e Circle. Num cenário real, uma interface é definida por outra pessoa, mas a sua implementação é fornecida por diferentes fornecedores de implementação. Além disso, é usado por outra pessoa. A parte de implementação fica oculta pelo usuário que utiliza a interface.

Arquivo: TestInterface1.java

 //Interface declaration: by first user interface Drawable{ void draw(); } //Implementation: by second user class Rectangle implements Drawable{ public void draw(){System.out.println('drawing rectangle');} } class Circle implements Drawable{ public void draw(){System.out.println('drawing circle');} } //Using interface: by third user class TestInterface1{ public static void main(String args[]){ Drawable d=new Circle();//In real scenario, object is provided by method e.g. getDrawable() d.draw(); }} 
Teste agora

Saída:

 drawing circle 

Exemplo de interface Java: banco

Vejamos outro exemplo de interface java que fornece a implementação da interface do Banco.

Arquivo: TestInterface2.java

dependência parcial
 interface Bank{ float rateOfInterest(); } class SBI implements Bank{ public float rateOfInterest(){return 9.15f;} } class PNB implements Bank{ public float rateOfInterest(){return 9.7f;} } class TestInterface2{ public static void main(String[] args){ Bank b=new SBI(); System.out.println('ROI: '+b.rateOfInterest()); }} 
Teste agora

Saída:

 ROI: 9.15 

Herança múltipla em Java por interface

Se uma classe implementa múltiplas interfaces, ou uma interface estende múltiplas interfaces, isso é conhecido como herança múltipla.

herança múltipla em java
 interface Printable{ void print(); } interface Showable{ void show(); } class A7 implements Printable,Showable{ public void print(){System.out.println('Hello');} public void show(){System.out.println('Welcome');} public static void main(String args[]){ A7 obj = new A7(); obj.print(); obj.show(); } } 
Teste agora
 Output:Hello Welcome 

Q) Herança múltipla não é suportada por classe em java, mas é possível por uma interface, por quê?

Como explicamos no capítulo sobre herança, herança múltipla não é suportada no caso de aula por causa da ambiguidade. No entanto, é suportado no caso de uma interface porque não há ambiguidade. É porque sua implementação é fornecida pela classe de implementação. Por exemplo:

 interface Printable{ void print(); } interface Showable{ void print(); } class TestInterface3 implements Printable, Showable{ public void print(){System.out.println('Hello');} public static void main(String args[]){ TestInterface3 obj = new TestInterface3(); obj.print(); } } 
Teste agora

Saída:

 Hello 

Como você pode ver no exemplo acima, as interfaces Printable e Showable possuem os mesmos métodos, mas sua implementação é fornecida pela classe TestTnterface1, portanto não há ambigüidade.


Herança de interface

Uma classe implementa uma interface, mas uma interface estende outra interface.

 interface Printable{ void print(); } interface Showable extends Printable{ void show(); } class TestInterface4 implements Showable{ public void print(){System.out.println('Hello');} public void show(){System.out.println('Welcome');} public static void main(String args[]){ TestInterface4 obj = new TestInterface4(); obj.print(); obj.show(); } } 
Teste agora

Saída:

 Hello Welcome 

Método padrão Java 8 na interface

Desde o Java 8, podemos ter o corpo do método na interface. Mas precisamos torná-lo o método padrão. Vejamos um exemplo:

Arquivo: TestInterfaceDefault.java

 interface Drawable{ void draw(); default void msg(){System.out.println('default method');} } class Rectangle implements Drawable{ public void draw(){System.out.println('drawing rectangle');} } class TestInterfaceDefault{ public static void main(String args[]){ Drawable d=new Rectangle(); d.draw(); d.msg(); }} 
Teste agora

Saída:

limitações do e-banking
 drawing rectangle default method 

Método estático Java 8 na interface

Desde Java 8, podemos ter métodos estáticos na interface. Vejamos um exemplo:

Arquivo: TestInterfaceStatic.java

 interface Drawable{ void draw(); static int cube(int x){return x*x*x;} } class Rectangle implements Drawable{ public void draw(){System.out.println('drawing rectangle');} } class TestInterfaceStatic{ public static void main(String args[]){ Drawable d=new Rectangle(); d.draw(); System.out.println(Drawable.cube(3)); }} 
Teste agora

Saída:

 drawing rectangle 27 

P) O que é marcador ou interface marcada?

Uma interface que não possui nenhum membro é conhecida como marcador ou interface marcada, por exemplo, Serializável , Cloneable, Remote, etc. Eles são usados ​​​​para fornecer algumas informações essenciais à JVM para que a JVM possa realizar alguma operação útil.

 //How Serializable interface is written? public interface Serializable{ } 

Interface aninhada em Java

Nota: Uma interface pode ter outra interface conhecida como interface aninhada. Aprenderemos isso em detalhes no classes aninhadas capítulo. Por exemplo:

 interface printable{ void print(); interface MessagePrintable{ void msg(); } } 
Mais sobre interface aninhada