- Interface
- Exemplo de interface
- Herança múltipla por interface
- Por que a herança múltipla é suportada na Interface, embora não seja suportada no caso da classe.
- Interface do marcador
- 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.
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.
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 .
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.
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