Executar todos os métodos de uma classe que implementa uma interface?

É possível executar todos ou apenas um método de todas as classes que implementam uma interface?

public interface TestInterface {

    public void teste(String test);

}


public class Teste implements TestInterface {


    @Override
    public void teste(String test) {
        System.out.println(test);
    }


}

Sim e não.

public interface Iface {
    public void foo();
}


public class Classe implements Iface {
    @Override
    public void foo(){
        //Do anything
    }
}


public class Classe2 implements Iface {
    @Override
    public void foo(){
        //Do anything
    }

    public void foo2(){}
}

Sim:

  • Você tem a interface e a implementação dela só tem os métodos da interface e você instancia um objeto da interface.

    Iface iface = new Classe();

  • Você tem a interface e a implementação dela tem métodos adicionais e você instancia um objeto da própria classe.

    Classe2 classe2 = new Classe2();

Não:

  • Você tem a interface e a implementação dela tem métodos adicionais e você instancia um objeto da interface

    Iface iface = new Classe2();

1 curtida