"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como o Java resolve o problema da ambiguidade ao reescrever o método multi-interface?

Como o Java resolve o problema da ambiguidade ao reescrever o método multi-interface?

Postado em 2025-04-13
Navegar:481

How Does Java Resolve Ambiguity When Overriding Methods in Multiple Interfaces?

substituindo ambiguidade com várias interfaces

No reino da programação orientada a objetos, as classes podem implementar várias interfaces. No entanto, quando essas interfaces possuem métodos com assinaturas idênticas, surge uma pergunta: como o compilador resolve qual método de interface é substituído?

em Java, uma classe que implementa várias interfaces com esses métodos sobrepostos terá apenas uma implementação eficaz. O compilador não distingue entre os métodos baseados em sua origem da interface. int f (); } Interface B { int f (); } classe de teste implementa a, b { @Override public int f () { retornar 0; } }

Neste cenário, o teste implementa A e B, e ambas as interfaces definem um método chamado f () com a mesma assinatura. Ao substituir esse método no teste, a classe substitui efetivamente o método f () de ambas as interfaces, embora apenas uma anotação @Override esteja presente. Como resultado, o compilador escolhe o primeiro método de substituição que encontra, independentemente de sua origem da interface. Nesses casos, o compilador relatará um erro, pois não é possível ter dois métodos com a mesma assinatura, mas diferentes tipos de retorno na mesma classe. vazio presente (); } Convidado da interface { presente booleano (); } classe Apresentável implementa presente, convidado { @Override public void presente () { System.out.println ("Presente como um presente!"); } }

interface A {
  int f();
}

interface B {
  int f();
}

class Test implements A, B {   
  @Override
  public int f() {  
    return 0;
  }
}   
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3