SóProvas


ID
249439
Banca
CESPE / CEBRASPE
Órgão
DETRAN-ES
Ano
2010
Provas
Disciplina
Engenharia de Software
Assuntos

A respeito da orientação a objetos e das respectivas linguagens de
programação, julgue os itens subsequentes.

A herança de interfaces consiste no único caso de herança múltipla permitida a uma classe em Java, visto que, em geral, não é possível que uma classe pai tenha o mesmo nome de método de outra classe pai.

Alternativas
Comentários
  • CERTO

    A herança de interfaces é a unica forma de herança múltipla permitida em uma classe Java.
    FONTE: www.if.ufrgs.br/~betz/jaulas/aula5.htm 
     

  • Julgo a assertiva errada!
    A expressão "herança múltipla permitida a uma classe em Java" fala sobre herença múltipla permitida a uma classe. A relação entre classe e interfaces é de implementação não de herença. Uma classe não especializa uma interface, mas sim a realiza.

    Entre interfaces realmente pode ocorrer herança múltipla (extends) mas entre interfaces e classes há apenas implementação/realização (implements);
  • Rolou uma discussão na timasters sobre esse assunto interessante: 

    > 2011/8/19 Leonardo Marcelino <leomarcsys@...>
    >
    > > @Thiago
    > > Existe esse problema sim, inclusive é a justificativa contra a herança
    > > múltipla.
    > > O que a trecho quer dizer é o seguinte:
    > > Classes
    > > Pai1.falar() Pai2.falar()
    > > Filho.falar()
    > >
    > > A justificativa é que não há como garantir qual método falar() seria
    > > executado, uma vez que as duas superclasses o possuem.

    Fonte: http://br.groups.yahoo.com/group/timasters/message/117615
  • EU PODERIA JURAR PELA VIDA DA MINHA MAE QUE NAO EXISTIA HERANCA MULTIPLA EM JAVA
  • Atenção! Uma interface, pode HERDAR (isso mesmo, com EXTENDS) mais de uma interface. Uma classe não pode HERDAR, mas pode IMPLEMENTAR mais de uma interface.

    Exemplo:
    Interface pode Herdar mais de uma Interface.
    interface Veiculo {...}
    interface Transporte {...}
    interface Carro extends Veiculo, Transporte {
    ...
    }
  • O trecho "uma classe pai tenha o mesmo nome de método de outra classe pai" deixou a questão totalmente confusa.

    Além disso, fiquei com uma dúvida. Testei no eclipse o código abaixo e compila normalmente. Mas como se sabe qual o método op1() que está sendo implementado, já que tanto A quanto B tem essa assinatura? Conceitualmente, como isso funciona?

    interface A {

      public abstract void op1();

    }

    interface B {

      public abstract void op1();

    }

    interface AB extends A, B {

    }

    class ABConcreta implements AB {

      @Override

      public void op1() {

      System.out.println("implementação da operação 1.");

      }

    }

  • "em geral, não é possível que uma classe pai tenha o mesmo nome de método de outra classe pai". E se eu tiver duas classes bases, em pacotes diferentes? Em geral, isso não é possível?

  • é lógico que é possível que uma classe pai tenha o mesmo nome de método de outra classe pai, mas a classe filha tem que resolver o conflito, por exemplo, com @Override e chamando o método pelo nome totalmente qualificado a partir de Classe/Interface.método, apenas isso!