Skip to content

Latest commit

 

History

History
68 lines (59 loc) · 3.42 KB

26.md

File metadata and controls

68 lines (59 loc) · 3.42 KB

Pergunta

26 - Indica, justificando, se as seguintes afirmações são verdadeiras ou falsas:

  1. O polimorfismo permite que classes derivadas ofereçam implementações alternativas de métodos na classe base
  2. A keyword override indica que um método na subclasse é uma extensão/sobreposição de um método na superclasse
  3. A keyword new indica que um método na subclasse é uma extensão/sobreposição de um método na superclasse
  4. Métodos abstract podem existir em classes não-abstract
  5. Métodos não-abstract podem existir em classes abstract
  6. Subclasses podem sobrepor métodos virtual da superclasse
  7. Subclasses podem sobrepor métodos abstract da superclasse
  8. Numa subclasse é possível sobrepor (override) um método não-virtual e não-abstract da superclasse

Soluções

Solução 1

  1. Verdadeiro. Permite com que as classes derivadas utilizem os métodos com a mesma assinatura dos métodos da classe base e, reaproveitando, alteram-nos, caso seja necessário.
  2. Verdadeiro. A keyword override, em métodos da classe derivada, permite a sobreposição de métodos criados na classe base.
  3. Falso. A keyword new, em métodos da classe derivada, ignora os métodos presentes na classe base e acaba com o polimorfismo.
  4. Falso. Métodos abstract nunca podem existir em classes não-abstract.
  5. Verdadeiro. Porém não é possível instanciar classes abstratas para utilizar diretamente o método contido na mesma.
  6. Verdadeiro. Utilizando a keyword override, é possível alterar/sobrepor o método.
  7. Verdadeiro. Pode e é obrigatório sobrepor métodos abstract da classe base.
  8. Falso. Para um método ser sobreposto tem que usar a keyword virtual, caso tenha corpo, ou abstract, caso não tenha corpo.

Por Lucas Viana

Solução 2

  1. A afirmação é verdadeira, pois ao fazer uso dos modificadores de herança é possível implementar funcionalidades adicionais ou diferentes aos métodos declarados na superclasse;
  2. A afirmação é verdadeira, pois a keyword override permite alterar ou adicionar funcionalidades, efetivamente extendendo as funcionalidades do método da superclasse ou sobrepondo-as pelas definidas na subclasse;
  3. A afirmação é falsa, pois a keyword new oculta o método da superclasse, utilizando apenas o da subclasse, sem possibilidade de aceder às funcionalidades do método da superclasse;
  4. Esta afirmação é falsa, pois é necessário a classe ser abstract para ser possível que esta contenha métodos sem corpo, também abstract;
  5. Esta afirmação é verdadeira, pois as classes abstract podem conter métodos com corpo, desde que estes não sejam também abstract;
  6. Esta afirmação é verdadeira, pois os métodos com o modificador de herança virtual de uma superclasse podem ser sobrepostos se o método definido na subclasse possuir o mesmo nome que o original e o modificador de herança override;
  7. Esta afirmação é verdadeira, pois as subclasses de uma superclasse abstract devem sempre possuir uma definição dos métodos abstract da superclasse, sendo a subclasse obrigada a implementá-los;
  8. Esta afirmação é falsa, pois o modificador de herança override apenas pode sobrepor métodos da superclasse que tenham o modificador de herança virtual ou que sejam abstract.

Por Pedro Inácio.