26 - Indica, justificando, se as seguintes afirmações são verdadeiras ou falsas:
- O polimorfismo permite que classes derivadas ofereçam implementações alternativas de métodos na classe base
- A keyword
override
indica que um método na subclasse é uma extensão/sobreposição de um método na superclasse - A keyword
new
indica que um método na subclasse é uma extensão/sobreposição de um método na superclasse - Métodos
abstract
podem existir em classes não-abstract
- Métodos não-
abstract
podem existir em classesabstract
- Subclasses podem sobrepor métodos
virtual
da superclasse - Subclasses podem sobrepor métodos
abstract
da superclasse - Numa subclasse é possível sobrepor (
override
) um método não-virtual
e não-abstract
da superclasse
- 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.
- Verdadeiro. A keyword
override
, em métodos da classe derivada, permite a sobreposição de métodos criados na classe base. - Falso. A keyword
new
, em métodos da classe derivada, ignora os métodos presentes na classe base e acaba com o polimorfismo. - Falso. Métodos
abstract
nunca podem existir em classes não-abstract
. - Verdadeiro. Porém não é possível instanciar classes abstratas para utilizar diretamente o método contido na mesma.
- Verdadeiro. Utilizando a keyword
override
, é possível alterar/sobrepor o método. - Verdadeiro. Pode e é obrigatório sobrepor métodos
abstract
da classe base. - Falso. Para um método ser sobreposto tem que usar a keyword
virtual
, caso tenha corpo, ouabstract
, caso não tenha corpo.
Por Lucas Viana
- 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;
- 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; - 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; - Esta afirmação é falsa, pois é necessário a classe ser
abstract
para ser possível que esta contenha métodos sem corpo, tambémabstract
; - Esta afirmação é verdadeira, pois as classes
abstract
podem conter métodos com corpo, desde que estes não sejam tambémabstract
; - 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çaoverride
; - Esta afirmação é verdadeira, pois as subclasses de uma superclasse
abstract
devem sempre possuir uma definição dos métodosabstract
da superclasse, sendo a subclasse obrigada a implementá-los; - Esta afirmação é falsa, pois o modificador de herança
override
apenas pode sobrepor métodos da superclasse que tenham o modificador de herançavirtual
ou que sejamabstract
.
Por Pedro Inácio.