Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Exercicio 1 da Aula 4 do curso Certificação Java SE 7 Programmer I: Relações entre classes Certificação Java SE 7 Programmer I: Relações entre classes

No exercicios temos o seguinte codigo

interface Z {}
interface W {};
interface Y extends Z, W {}
class B {}
class C extends B implements Y {}
class D extends B implements Z, W {}
class E extends C {}
class A {
    public static void main(String[] args) {
        B b = new C();
    }
}

A resposta correta eh O código compila e roda, ao rodar não dá exception.

Nao deveria dar erro pelo motivo da interface Y extender 2 outras interfaces? Pelo que eu entendi podemos implementar mais de uma interface porem nao externder pelo fato do java nao ter heranca multipla

3 respostas

Oi Alex

Em Java tem uma regrinha diferente para interfaces. Uma interface não implementa, ela define os contratos, correto? Então basicamente uma interface não pode implementar outra interface, o "implements" não pode ser usado por uma interface: "No implements clause allowed for interface".

A interface não implementa os métodos de outra interface, mas pode extender outra interface. Um exemplo em que a extensão da interface é necessária é: considere que você possui uma interface de veículo com dois métodos moveForward e moveBack, também precisa incorporar a aeronave que é um veículo, mas com alguns métodos adicionais como moveUp, moveDown, portanto , no final, você tem:

Veiculo:

public interface IVehicle {
  bool moveForward(int x);
  bool moveBack(int x);
};

e avião:

public interface IAirplane extends IVehicle {
  bool moveDown(int x);
  bool moveUp(int x);
};

Uma interface pode fazer uso do extends para outras N interfaces, mas uma interface não pode implementar nenhuma outra, pois o conceito de "implementar" é nas classes, uma interface define o contrato, não os implementa, entendeu?

Entao eu poderia ter por exemplo uma interface que extende duas outras interfaces?

Por exemplo:

interface X extends Runnable, Comparable { }

?

solução!

Sim, sem problemas. Exemplos:

public interface Pessoa extends Runnable, Iterable, Serializable {

}