SóProvas


ID
1419406
Banca
FCC
Órgão
TCE-GO
Ano
2014
Provas
Disciplina
Engenharia de Software
Assuntos

Em aplicações orientadas a objetos é possível construir diferentes tipos de classes, como

Alternativas
Comentários
  • Classes abstratas não podem ser instanciadas, podem ter métodos abstratos e concretos.

  • a)
    classes abstratas, que podem possuir construtores e serem instanciadas diretamente (uma classe abstrata não gera instância)
    b)
    interfaces, que podem possuir construtores e serem instanciadas diretamente. (interfaces só podem possuir assinaturas de métodos e constantes e não podem ser instanciados diretamente)
    c)
    classes abstratas, que podem conter métodos implementados e assinaturas de métodos sem implementação. (ok)
    d)
    interfaces, que podem possuir constantes, variáveis e atributos privados. (interfaces só podem possuir assinaturas de métodos e constantes)
    e)
    superclasses em relações de herança, que podem possuir métodos abstratos, mas não podem ser instanciadas diretamente. (elas podem ser instanciadas diretamente se não forem abstratas)

  • Interfaces:

    ·Uma interface não é considerada uma Classe e sim uma Entidade.

    ·Não possui implementação, apenas assinatura, ou seja, apenas a definição dos seus métodos sem o corpo.

    ·Todos os métodos são abstratos.

    ·Seus métodos são implicitamente Públicos e Abstratos.

    ·Não há como fazer uma instância de uma Interface e nem como criar um Construtor.

    ·Funcionam como um tipo de "contrato", onde são especificados os atributos, métodos e funções que as classes que implementem essa interface são obrigadas a implementar.

    ·Já que C# não suporta Heranças Múltiplas, as Interfaces são usadas para implementá-las.

    Classes Abstratas:

    ·As classes abstratas devem conter pelo menos um método abstrato, que não tem corpo.

    ·É um tipo especial de classe que não há como criar instâncias dela.

    ·É usada apenas para ser herdada, funciona como uma super classe.

    ·Uma grande vantagem é que força a hierarquia para todas as sub-classes.

    ·É um tipo de contrato que faz com que as sub-classes contemplem as mesmas hierarquias e/ou padrões.

    Overview:

    Quando nos criamos uma Interface, nós estamos basicamente criando um set de métodos sem qualquer implementação que deve ser herdado por outras classes já implementadas. A vantagem é que desta forma consegue-se prover um caminho para uma classe ser parte de duas classes: uma herdada hierarquicamente e outra da Interface.

    Quando nos criamos uma Classe Abstrata, nós estamos criando uma classe base que pode ter um ou mais métodos completos, mas pelo menos um ou mais destes métodos tem que criados incompletos (sem corpo), isto caracteriza uma Classe Abstrata.

    Vale lembrar que, se todos os método da Classe abstrata forem sem corpo, ela se torna uma Interface.

    O propósito de uma Classe Abstrata é prover uma base de definições de como um set de Classes Derivadas irão trabalhar e então permitir os programadores de preencher as implementações nas Classes derivadas.

    Abaixo um quadro comparativo para tornar mais fácil a compreensão entre diferenças e similaridades entre Classes Abstratas e Interfaces.



    Leia mais em: Interfaces X Classes Abstratas http://www.devmedia.com.br/interfaces-x-classes-abstratas/13337#ixzz3d5TkY4bp

  • A) classes abstratas, que podem possuir construtores e serem instanciadas diretamente (uma classe abstrata não gera instância)

     

    B) interfaces, que podem possuir construtores e serem instanciadas diretamente. (interfaces só podem possuir assinaturas de métodos e constantes e não podem ser instanciados diretamente)

     

    C) classes abstratas, que podem conter métodos implementados e assinaturas de métodos sem implementação. (CORRETO)

     

    D) interfaces, que podem possuir constantes, variáveis e atributos privados. (interfaces só podem possuir assinaturas de métodos e constantes)

     

    E) superclasses em relações de herança, que podem possuir métodos abstratos, mas não podem ser instanciadas diretamente. (elas podem ser instanciadas diretamente se não forem abstratas)

  • Classe Abstrata x Classe Concreta

    Imaginemos uma classe qualquer – temos três possibilidades:

    §  1.  se ela tem pelo menos um método abstrato, será obrigatoriamente abstrata;

    §  2. se ela tem todos os métodos abstratos, será obrigatoriamente abstrata;

    §  3. se ela tem todos os métodos concretos, poderá ser concreta ou abstrata.

  • ⦁ classes abstratas, que podem possuir construtores e serem instanciadas diretamente.

    Errado. As classes abstratas não podem ser instanciadas diretamente. 

    ⦁ interfaces, que podem possuir construtores e serem instanciadas diretamente.

    Errado. Interfaces também não podem ser instanciadas diretamente.

    ⦁ classes abstratas, que podem conter métodos implementados e assinaturas de métodos sem implementação.

    Correto. As classes abstratas, além de não poderem ser instanciadas, podem conter assinaturas de métodos sem implementação. Esse tipo de assinatura de método sem implementação é chamado de método abstrato.

    ⦁ interfaces, que podem possuir constantes, variáveis e atributos privados.

    Errado. Interfaces não podem conter variáveis.

    ⦁ superclasses em relações de herança, que podem possuir métodos abstratos, mas não podem ser instanciadas diretamente.

    Errado. Ele descreveu o conceito de classe abstrata e não o de superclasse.

    Resposta: C