Implementando uma Interface


Implementar uma interface significa a obrigação de prover implementações legais dos métodos definidos na interface. Os métodos de uma interface apenas definem como eles irão parecer nas classes, como serão chamados e o que irão retornar; mas o que eles irão fazer será definido na classe que os implementar.

public interface Eletronico {
     
      public void ligar();

}


public class Televisao implements Eletronico {

      public void ligar() { }
     
}


Classes de implementação devem aderir às mesmas regras para implementação de métodos como em uma classe que herda de uma classe abstrata. Além de ser uma classe de implementação legal, uma classe que implementa uma interface deve:
·         Prover implementações concretas para todos os métodos declarados na interface;
·         Seguir todas as regras para overrides;
·         Declarar exceções não verificadas na implementação de métodos diferentes das declaradas no método da interface (a exceção no método implementado pode ser uma subclasse da exceção declarada na interface);
·         Manter a assinatura do método da interface, e manter o mesmo tipo de retorno (ou subtipo); mas não é necessário manter as mesmas exceções declaradas no método da interface;
·         Uma classe abstrata pode implementar uma interface, e nesse caso, não será obrigatória a implementação dos métodos da interface, isso ficará para a classe que herdar dessa classe abstrata; porém, caso a classe abstrata implemente-os, a classe concreta que herdar dessa classe abstrata não mais terá a obrigação de implementa-los, já que herdará esses métodos;

public interface Eletronico {
      public void ligar();
}

public abstract class Portatil implements Eletronico {
      /* a classe abstrata não é obrigada a
       * implementar os métodos da interface
       * Eletronico */       
}

public class MicroSystem extends Portatil {
      /* como a classe abstrata Portatil não
       * implementou o método ligar(), a classe
       * concreta MicroSystem foi obrigada a
       * implementa-lo */
      public void ligar() { }
}

·         Uma classe pode implementar mais de uma interface, mas só pode herdar de apenas uma classe;
·         Interfaces podem herdar de outras interfaces, mas nunca podem implementar outras interfaces; é o chamado subinterface; uma classe concreta que implementar uma interface que herde de outra interface deverá implementar todos os métodos das duas interfaces;
·         Uma classe comum não pode herdar mais de uma classe; porém uma interface pode herdar muitas interfaces.



Fonte: SCJP Sun Certifi ed Programmer for Java 6 Study Guide

0 comentários:

Postar um comentário