Comecei a estudar para a certificação pelo livro da Kathy Sierra (SCJP 1.6).
Minhas dúvidas são:
Já estendi que não há herança múltipla em Java, desta forma só posso estender uma classe, mas posso implementar tantas interfaces quantas eu quiser.
Como fica se eu implementar duas interfaces que não tem qualquer relacionamento, mas com os mesmos métodos?
Algo do tipo:
public interface Carro {
public void abrirPorta();
}
public interface Caminhao {
public void abrirPorta();
}
public class Teste implements Carro, Caminhao {
public static void main(String[] args) {
Teste t = new Teste();
t.abrirPorta();
}
/// Este método pertence a qual das duas interfaces? Carro ou Caminhão?
public void abrirPorta() {}
}
Outra dúvida que tenho é sobre Enum:
Vi que Enum pode ser declarando tanto dentro como fora da classe, como a seguir:
// Enum declarado fora da classe
enum Estacoes {VERAO, INVERNO, OUTONO, PRIMAVERA};
public class Teste {
public static void main(String[] args) {
Teste t = new Teste();
System.out.println(Estacoes.VERAO);
}
}
// Enum declarado dentro da classe
public class Teste {
enum Estacoes {VERAO, INVERNO, OUTONO, PRIMAVERA};
public static void main(String[] args) {
Teste t = new Teste();
System.out.println(Estacoes.VERAO);
}
}
Qual a diferença? Quais as implicações entre colocar dentro ou fora da classe? Não vi nenhuma diferença para a classe Teste, só para outras classes do mesmo pacote que não conseguem ter visibilidade no segundo caso e para classes de outro pacote não conseguem ter visibilidade em caso nenhum. Mas e para a classe Teste, há alguma diferença?
Fico grato pelos esclarecimentos.